加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

如何使sql-mode =“NO_ENGINE_SUBSTITUTION”永久在MySQL my.cnf

发布时间:2020-12-12 16:28:23 所属栏目:MsSql教程 来源:网络整理
导读:UPDATE FIXED 1/18/15 在我们最近更新到MySQL 5.6.27(从Ubuntu repo)之后,此选项现在可以工作.所以这似乎是以前版本的MySQL的一个问题. 原题 随着对MySQL的新升级(5.6.20),更新和插入失败,除非我将sql-mode设置为NO_ENGINE_SUBSTITUTION. 感谢documentation,
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文件
>有一些额外的配置包括从/etc/mysql/conf.d/加载,但它们是空白的.

这似乎对我有用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读