如何使sql-mode =“NO_ENGINE_SUBSTITUTION”永久在MySQL my.cnf
UPDATE FIXED 1/18/15
在我们最近更新到MySQL 5.6.27(从Ubuntu repo)之后,此选项现在可以工作.所以这似乎是以前版本的MySQL的一个问题. 原题 随着对MySQL的新升级(5.6.20),更新和插入失败,除非我将sql-mode设置为NO_ENGINE_SUBSTITUTION. 感谢documentation,我可以从mysql终端运行以下内容,并解决了这个问题(暂时的): SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION'; SET SESSION sql_mode = 'NO_ENGINE_SUBSTITUTION';` 但下次MySQL重新启动时,这些设置将丢失. 所以我试图通过编辑/etc/mysql/my.cnf(在我的标准服务器上运行Ubuntu 12.04.5 LTS),并添加documentation说应该添加的配置设置: [mysqld] sql-mode="NO_ENGINE_SUBSTITUTION" 用于测试的替代语法 仅用于测试目的,我也尝试过以下格式(重新启动MySQL时不会导致错误,但不会影响设置). # dash no quotes sql-mode=NO_ENGINE_SUBSTITUTION # underscore no quotes sql_mode=NO_ENGINE_SUBSTITUTION # underscore and quotes sql_mode="NO_ENGINE_SUBSTITUTION" 没有什么工作.重新启动后,此设置丢失,我必须从mysql终端手动重新运行命令,以便再次保存工作. 替代地点 >我知道/etc/mysql/my.cnf被引用,因为我们在这个文件中定义了复制,而且正在运行. 通过从命令行运行这个配置文件,我得到一个被引用的配置文件的列表: mysqld --help --verbose 我看到一行如下: Default options are read from the following files in the given order: /etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf 这是文件“查找”的默认位置,这并不意味着它实际上在那里找到了一个文件.我的服务器没有/etc/my.cnf,/usr/etc/my.cnf或?/ .my.cnf. 所以看起来我的/etc/mysql/my.cnf中的配置是mysql引用的唯一文件,因此这个设置不会被覆盖. 测试的逻辑结论 然而,逻辑上,似乎语法不正确或被其他原因忽略.任何其他想法? 解决方法只是为了将我的配置添加到组合中,我使用MySQL 5.7.8,默认情况下具有相同的严格sql_mode规则.我终于想到我的/etc/mysql/my.conf中有以下工作: [mysqld] sql-mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION" 即破折号,而不是下划线并引用价值. >除了/etc/mysql/my.conf之外,我还没有其他的my.conf文件 这似乎对我有用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |