gpt4 book ai didi

mysql - 如何在 MySQL my.cnf 中永久设置 sql-mode ="NO_ENGINE_SUBSTITUTION"

转载 作者:IT老高 更新时间:2023-10-28 13:00:24 27 4
gpt4 key购买 nike

更新于 2015 年 1 月 18 日修复

在我们最近更新到 MySQL 5.6.27(来自 Ubuntu 存储库)之后,此选项现在可以使用。所以这似乎是以前版本的 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/加载,但它们是空白的。

这似乎对我有用。

关于mysql - 如何在 MySQL my.cnf 中永久设置 sql-mode ="NO_ENGINE_SUBSTITUTION",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28849293/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com