これはこの質問のフォローアップです 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_mode
、sql-mode
–何も助けなかった。
最終的に、mysql.comから取得したMySQLサーバーを削除し、Homebrew経由で再インストールし、編集する必要がありました。
/usr/local/Cellar/mysql/5.6.xx/my.cnf
かっこいいSTRICT_TRANS_TABLES
。
ただし、デフォルトの構成が/etc/my.cnf
、しかし、私はこれにすでに多くの時間を費やしました。ちなみに、mysql.comが提供するディストリビューションをどうするかはまだわかりません。
この問題は、しばらくの間私にもひっかかった。これまでの回答はどれも元の問題に対処していませんが、私が解決したと思うので、他の人に役立つ場合に備えて投稿します。
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)
最後に、厳格モードはありません!
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
OS XのMySQL厳格モード によると、問題のある設定は実際には/usr/local/mysql/my.cnf
をコメントアウトして、この動作を停止できます。
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
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設定がある限りストリクトモードを含まない場合は、ストリクトモードをオフにしてください。
Mac OS X El Capitanでは、ユーザーのホームディレクトリに.my.cnfファイルを作成し、[mysqld]
の下でmysqlの設定を設定してから、mysqlを再起動しました。うまくいきました!
既存の設定がある場合は、sql-modeとsql_modeの両方を検索する必要があります。 http://it.i88.ca/2014/03/how-to-get-rid-of-strict-sql-mode-in.html