报错信息:

SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column ‘dongli_www.k_hotkecheng.ke_id’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

先查看sql_mode

select @@global.sql_mode

查询出来的值为

ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

去掉ONLY_FULL_GROUP_BY,重新设置值。

set @@global.sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

最优的方式是改写配置文件

解决timestamp错误

1292 – Incorrect datetime value: ‘0000-00-00 00:00:00’ for column

使用 SET GLOBAL sql_mode='STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

或者修改凡是

sql_mode='STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

date数据类型 不能置为 0000-00-00 00:00:00* 在8.0之前

通过各种查询, 了解到 8.0的 sql_mode以上已经取消了 NO_AUTO_CREATE_USER这个关键字,将这个关键字删除, 以下为实际操作

如果是mysql8.*最终应该是

SET GLOBAL sql_mode='STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

请输入图片描述

Last modification:April 27, 2024
如果觉得我的文章对你有用,请随意赞赏