这是对此问题的跟进MYSQL incorrect DATETIME format
如何一劳永逸地摆脱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下载了它。但这也没有帮助。在这里得到答案:How to fix `unknown variable 'sql-mode=ANSI'`?我尝试了/etc/my.cnf
的不同变体:[mysql]
,[mysqld]
,sql_mode
,sql-mode
- 没有任何帮助。< / p>
答案 0 :(得分:40)
这个问题也让我感到震惊了一段时间。到目前为止,没有一个答案解决了原始问题,但我相信我的确如此,我会发布它,以防它帮助其他任何人。
我在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)
最后,没有严格的模式!
答案 1 :(得分:14)
所以最后我删除了我从mysql.com获得的MySQL服务器,通过Homebrew重新安装它并且不得不编辑
/usr/local/Cellar/mysql/5.6.xx/my.cnf
我可以在哪里发表评论STRICT_TRANS_TABLES
。
然而,这并不能解释为什么默认配置会覆盖/etc/my.cnf
中的默认配置,但我已经花了太多时间在这上面。顺便说一句,我仍然不确定如何处理mysql.com提供的发行版。
答案 2 :(得分: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
答案 3 :(得分:6)
根据MySQL Strict Mode on OS X,有问题的设置实际上位于/usr/local/mysql/my.cnf
,可以注释掉以停止此行为。
答案 4 :(得分: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
答案 5 :(得分:2)
我尝试了在Mac OS 10.12上使用MySQL 5.7在这个问题上找到的每一个答案,并最终关闭了严格的模式,不是因为my.cnf的位置,可能是在MySQL所说的任何地方检查,但由于UNIX权限问题。
我最初使用MySQL Workbench 6.2.3.12313创建my.cnf。这导致了两个可能的问题:首先,它将选项设置为&#34; sql-mode&#34;而不是&#34; sql_mode&#34;,它使文件(位于/ etc)只对root可读写。当你按照我的方式安装它时,MySQL不会以root身份运行,从MySQL网站上的二进制包开始 - 它作为_mysql运行。所以_mysql用户需要能够读取/etc/my.cnf,或者无论你放在哪里。为了使其工作,您需要运行:
sudo chmod o+r /etc/my.cnf
并且为了更好的衡量,您可能还想运行:
sudo chmod g+r /etc/my.cnf
然后确保重启MySQL。 (我发现这最适合通过Mac OS上的System Preferences MySQL面板;使用命令行有点乱,MySQL Workbench的功能根本不起作用。)只要你有一个sql_mode在my.cnf中设置不涉及严格模式,严格模式应该关闭。
答案 6 :(得分:0)
如果存在设置,您需要搜索sql-mode和sql_mode。 http://it.i88.ca/2014/03/how-to-get-rid-of-strict-sql-mode-in.html
答案 7 :(得分:0)
在Mac OS X上,El Capitan在用户主目录中创建了一个文件.my.cnf,并在while count < 10 and len(post_list) < 5:
下设置了mysql的设置,然后重新启动了mysql。工作得很好!