设置
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提供了所有必要的步骤来帮助您解决此问题。