当前位置: 首页 > 知识库问答 >
问题:

如何在MySQL My.cnf中使sql-mode=“no_engine_substitution”永久化

锺离伟彦
2023-03-14

在我们最近更新到MySQL5.6.27(来自Ubuntu repo)之后,这个选项现在起作用了。所以这似乎是以前版本的MySQL的一个问题。

通过对MySQL(5.6.20)的新升级,更新和插入将失败,除非我将sql-mode设置为no_engine_substitute。

多亏了这些文档,我可以从mysql终端运行以下操作,这就(暂时)解决了这个问题:

SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION';
SET SESSION sql_mode = 'NO_ENGINE_SUBSTITUTION';`

因此,我尝试通过编辑/etc/mysql/my.cnf(在运行Ubuntu 12.04.5LTS的标准服务器上),并添加文档中所说的应该添加的配置设置来使其永久化:

[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正在被引用,因为我们在此文件中定义了复制,这是有效的。
  • html" target="_blank">文件中没有覆盖它的其他相同设置。

通过从命令行运行以下命令,我将获得正在引用的配置文件列表:

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引用的唯一文件,因此该设置不会被覆盖。

从逻辑上讲,语法似乎是不正确的,或者由于其他原因被忽略了。还有别的想法吗?

共有1个答案

郑茂材
2023-03-14

为了将我的配置添加到混合配置中,我使用了MySQL5.7.8,默认情况下它具有相同的严格的sql_mode规则。

>

  • 我最终想到了在my/etc/mysql/my.conf中工作的以下方法:

    [mysqld]
    sql-mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION"
    

    即破折号,而不是下划线和值周围的引号。

    >

  • 除了/etc/mysql/my.conf之外,我没有其他my.conf文件

    有一些额外的配置包括从/etc/mysql/conf.d/加载,但它们是空的。

    这对我来说很管用。

  •  类似资料:
    • 问题内容: 我正在运行RHEL6,并且已经导出了如下环境变量: 当终端关闭时,该变量丢失。如何永久添加此变量,以便特定用户始终可以使用此变量值? 问题答案: 您可以将其添加到您的Shell配置文件中,例如,或在全局中添加。添加这些行之后,更改将不会立即反映在基于GUI的系统中,您必须退出终端或创建一个新终端,然后在服务器中注销会话并登录以反映这些更改。

    • null null 问题是,在ArrayList中有相当多的形状之后,paintComponent()方法的执行会变慢。 例如,自定义画笔。 在画布上拖动画笔时,我必须向ArrayList添加一个类型为“CustomBrush extends Shape”的新形状 所以只需一次划动,我就可以在ArrayList中得到数百个形状 问题是: 如何将100个形状对象“打包”成一个,使一次笔触成为Arra

    • 问题内容: 我意识到其他人也有类似的问题,但这使用的是v2撰写文件格式,对此我一无所获。 我想制作一个非常简单的测试应用程序以与MemSQL一起使用,但是之后无法使卷不被删除。如果我对Docker Docs的理解正确,那么在未明确告知卷的情况下不应删除卷。一切似乎都可以正常工作,但是先下降然后再上升,所有数据都将从数据库中删除。 作为一种好的实践建议,我将单独的memsqldata服务用作单独的数

    • 问题内容: 通过下面的代码,我已经能够保存cookie,但是一旦关闭应用程序,cookie就会消失。 这是怎么引起的,我该如何解决? 问题答案: 您必须告诉CookieSyncManager 在 加载有问题的页面 后 进行同步。在您的示例代码中,该方法在尝试加载页面之前完全执行,因此同步过程(异步发生)可能会在加载页面之前完成。 相反,告诉CookieSyncManager同步WebViewCli

    • 我正在做一个应用程序,并有权访问系统权限。我想让导航栏永久隐藏,它甚至不应该出现在用户交互上。 现在我使用这段代码,它隐藏了条,但当用户触摸屏幕时,它会再次显示。是否有任何方法可以永久隐藏它,直到活动停止(); 如有任何关于最佳实施的技术咨询或意见/建议,将不胜感激。

    • 我使用谷歌Chrome版本55.0.2883.87M。 当developer tool打开时,Navigator.UserAgent的值为:Mozilla/5.0(Linux;Android 6.0;Nexus 5 Build/MRA58N)AppleWebKit/537.36(KHTML,如Gecko)Chrome/55.0.2883.87 Mobile Safari/537.36 我通过htt