-
先查询是不是数据版本的问题(5.7.0以上就是):
SELECT VERSION();
-
查看sql_mode:
SELECT @@sql_mode;
如果查询出来的值中有(ONLY_FULL_GROUP_BY):
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
-
先执行(对于已存在的数据库有效):
SET 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):
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';
注意:以上是暂时解决方案,如果数据库重启后 设置会失效,上边这种方式只是修改了内存中的值,不能永久改变,永久改变方案需要设置配置文件
[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
windows配置文件 在安装目录下的my.ini 文件
Mac 或者Linux 的配置文件在/ etc/my.cnf