MYSQL sql_mode在MYSQL重新启动后保持重置



设置

mysql版本14.14 Distrib 5.7.38,用于Linux(x86_64),使用EditLine包装

分发服务器ID:Ubuntu说明:Ubuntu 18.04.5 LTS发布时间:18.04代号:仿生

MYSQL一直在重置我的sql_mode,所以我的网站运行不好。

MySQL消息如下

Expression #18 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'testdevnew.f.created_at' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

到目前为止,我所做的是从终端用命令连接mysql内部

mysql -u root -p

并运行以下命令

mysql> set global sql_mode='NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
mysql> set session sql_mode='NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

错误已经过去了,但持续了几天。。假设我们重新启动mysql服务器,上面的设置就没有了。

还尝试使用sql_mode更改以下文件,我希望在mysql重新启动后加载这些文件。

文件列表

/etc/mysql/my.cnf

/etc/mysql/mysql.cnf

/etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld]
sql_mode=NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

(我也尝试过报价)

然后重新启动mysql

sudo service mysql restart

但是这个设置并没有影响mysql的重新启动,我一直收到上面提到的错误。

mysqld --verbose --help

打印以下

sql-mode                                                     NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

你知道我做错了什么吗?

您可能有其他my.cnf文件被mysqld引用。

还要确保这些MySQL配置文件由MySQL用户所有,并且具有读/写权限。重新启动后,使用下面的代码验证sql模式配置是否正确加载。

SELECT @@GLOBAL.sql_mode;

这个线程,如何使sql模式="NO_ ENGINE_;MySQL my.cnf中的permanent提供了所有必要的步骤来帮助您解决此问题。

最新更新