web-dev-qa-db-ja.com

MySQLでSTRICT SQLモードを削除する方法

これはこの質問のフォローアップです MYSQLのDATETIME形式が正しくありません

STRICT_TRANS_TABLESを完全に取り除く方法は?

mysql --helpは、次の構成を報告します。

Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf

$ ls  /etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf
ls: /Users/pain/.my.cnf: No such file or directory
ls: /etc/mysql/my.cnf: No such file or directory
ls: /usr/local/etc/my.cnf: No such file or directory
/etc/my.cnf

$ cat /etc/my.cnf
[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION

しかし、これは役に立ちません。レガシーコードがいくつかあり、コンピューターを再起動するたびにmysqlを起動してsql_modeを変更する必要があります。

更新

そこで、HomebrewでインストールしたMySQLをあきらめて、mysql.comからダウンロードしました。しかし、それも助けにはなりませんでした。ここでの回答に従います: 「不明な変数 'sql-mode = ANSI'`を修正する方法?/etc/my.cnf[mysql][mysqld]sql_modesql-mode –何も助けなかった。

24
firedev

最終的に、mysql.comから取得したMySQLサーバーを削除し、Homebrew経由で再インストールし、編集する必要がありました。

/usr/local/Cellar/mysql/5.6.xx/my.cnf

かっこいいSTRICT_TRANS_TABLES

ただし、デフォルトの構成が/etc/my.cnf、しかし、私はこれにすでに多くの時間を費やしました。ちなみに、mysql.comが提供するディストリビューションをどうするかはまだわかりません。

14
firedev

この問題は、しばらくの間私にもひっかかった。これまでの回答はどれも元の問題に対処していませんが、私が解決したと思うので、他の人に役立つ場合に備えて投稿します。

MySQL(mysql.comから)Community Edition 5.7.10がOS X 10.10.3にインストールされています

最後に、次の内容の/etc/mysql/my.cnfを作成しました:-

[mysqld]

sql_mode=NO_ENGINE_SUBSTITUTION

サーバーを再起動した後、SHOW VARIABLES LIKE 'sql_mode';がくれました:-

+---------------+------------------------+
| Variable_name | Value                  |
+---------------+------------------------+
| sql_mode      | NO_ENGINE_SUBSTITUTION |
+---------------+------------------------+
1 row in set (0.00 sec)

最後に、厳格モードはありません!

40
Paul Warren

Centos 6.5では、/usr/my.cnfを編集して設定する必要がありました(/etc/my.cnfが存在し、バインドが正常に設定されていた場合でも)

[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION

パッケージの提供元:

mysql-community-client.x86_64      5.6.16-1.el6            @mysql56-community
9
vd1008

OS XのMySQL厳格モード によると、問題のある設定は実際には/usr/local/mysql/my.cnfをコメントアウトして、この動作を停止できます。

6
ssnobody

Sql_modeを空の文字列に設定することはできません。実際のクエリは次のとおりです。

SET @@GLOBAL.sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

MySQL 5.7.16

3

Mac OS 10.12でMySQL 5.7を使用して、この問題で見つけることができるすべての回答を試みましたが、最終的にはmy.cnfの場所ではなく、厳密モードがオフになりました。 UNIXパーミッションの問題のおかげ。

最初にmy.cnfを作成するためにMySQL Workbench 6.2.3.12313を使用しました。これにより、2つの問題が発生する可能性がありました。最初に、オプションを「sql_mode」ではなく「sql-mode」に設定し、rootに対してのみファイル(/ etcにある)を読み取りおよび書き込み可能にしました。 MySQLをMySQL Webサイトのバイナリパッケージからインストールした場合、MySQLはrootとして実行されません。_mysqlとして実行されます。そのため、_mysqlユーザーは/etc/my.cnfまたはどこに置いても読み取ることができる必要があります。それが機能するためには、以下を実行する必要があります:

Sudo chmod o+r /etc/my.cnf

また、適切な測定のために実行することもできます。

Sudo chmod g+r /etc/my.cnf

次に、MySQLを再起動してください。 (これはMac OSの[システム環境設定] MySQLパネルで最適に機能することがわかりました。コマンドラインの使用はややこしく、MySQL Workbenchの機能は単に機能しません。)my.cnfにsql_mode設定がある限りストリクトモードを含まない場合は、ストリクトモードをオフにしてください。

3
thinkcomp

Mac OS X El Capitanでは、ユーザーのホームディレクトリに.my.cnfファイルを作成し、[mysqld]の下でmysqlの設定を設定してから、mysqlを再起動しました。うまくいきました!

0
Kjell

既存の設定がある場合は、sql-modeとsql_modeの両方を検索する必要があります。 http://it.i88.ca/2014/03/how-to-get-rid-of-strict-sql-mode-in.html

0
i88.ca