24

これはこの質問のフォローアップです 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 からダウンロードしました。しかし、それも役に立ちませんでした。こちらの回答に従ってください: `unknown variable 'sql-mode=ANSI'` を修正するには? /etc/my.cnf: [mysql], [mysqld], ,のさまざまなバリエーションを試しましたがsql_modesql-mode何も役に立ちませんでした。

4

7 に答える 7

42

この問題は、しばらくの間私を悩ませました。これまでのところ、元の問題に対処した回答はありませんでしたが、私のものはそうしていると思いますので、他の人に役立つ場合に備えて投稿します。

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

最後に/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)

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

于 2015-12-23T00:42:44.153 に答える
14

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

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

くそったれをコメントアウトできる場所STRICT_TRANS_TABLES

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

于 2014-03-08T05:52:08.760 に答える
9

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
于 2014-03-14T10:41:35.997 に答える
3

現在、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

于 2016-11-24T12:47:34.107 に答える
3

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

最初に my.cnf を作成するために MySQL Workbench 6.2.3.12313 を使用しました。これにより、2 つの問題が発生する可能性がありました。まず、オプションを「sql_mode」ではなく「sql-mode」に設定し、(/etc にある) ファイルを root だけが読み書きできるようにしました。MySQL Web サイトのバイナリ パッケージからインストールした場合、MySQL はルートとして実行されません。_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 設定がある限り、厳格モードを含まないため、厳格モードはオフにする必要があります。

于 2017-04-18T12:44:23.713 に答える
0

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

于 2016-07-26T14:32:35.950 に答える