无法更改 Mariadb/Mysql sql_mode

无法更改 Mariadb/Mysql sql_mode

我安装了运行 Mariadb 的 Ubuntu 服务器 16.04.3,最近更新到了 10.2.9-MariaDB。自上次更新以来,我现在有一个看起来像的 sql_mode sql_mode = 'STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION',大概是默认的,但我需要做一些更改。即删除NO_ZERO_DATE并可STRICT_TRANS_TABLES能让应用程序再次运行。

/etc/mysql/**/*.cnf

问题是我sql_mode =在几个 .cnf(选项)文件(屏幕截图中列出)中添加了特定内容,每次更改后都会弹出/重新启动 mysql 服务器,弹出整个服务器,但什么都没有。查询没有任何变化> SELECT @@GLOBAL.sql_mode global;

谷歌没有提供帮助——我错过了什么?

更新:我终于弄清楚了默认设置的来源。/etc/mysql/my.cnf包含sql_mode = NO_ENGINE_SUBSTITUTION,TRADITIONAL

并给出:

TRADITIONAL | Makes MariaDB work like a traditional SQL server. Same as:

STRICT_TRANS_TABLES, STRICT_ALL_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, TRADITIONAL, NO_AUTO_CREATE_USER

这告诉我.cnf 的未按预期被读取。

答案1

移除TRADITIONAL从更新中sql 模式值解决并防止TRADITIONAL扩展到STRICT_TRANS_TABLES, STRICT_ALL_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, TRADITIONAL, NO_AUTO_CREATE_USER

答案2

这并没有回答 OP,但当其他人看到这个页面时可能会回答他们的谷歌搜索(就像我刚才做的那样):

我在设置 sql-mode 时遇到了麻烦,my.cnf因为各个设置之间有空格。换句话说,这有效:

[mysqld] sql-mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

这没有:

[mysqld] sql-mode="STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION" 注意:sql-mode 行全部在一行上 - Stack-Exchange 上的自动换行将其推到第二行上。

不幸的是,MySQL Workbench 为我生成的配置中有空格 - 但 MySQL 并没有告诉我问题出在哪里my.cnf

我在 Ubuntu 18.04 上运行 MySQL 5.7

相关内容