1、在5.7版本以上mysql中使用group by语句进行分组时, 如果select的字段 , 不是完全对应的group by后面的字段 , 有其他字段 , 那么就会报这个错误
ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column
查看sql_mode
select @@sql_mode;
mysql> select @@sql_mode;
可以看到有一个ONLY_FULL_GROUP_BY , 这个就是严格控制group by 和select 字段的 , 在不改变sql语句的前提下 , 把这个去掉就可以了
set @@global.sql_mode = '其他值';
2、Mysql ERROR 1067: Invalid default value for ‘date’ 解决
如果create table 时指定的engine项不被支持,这个时候mysql会支持报错
修改sql_mode 的值,如果没有则添加 NO_ENGINE_SUBSTITUTION
set @@global.sql_mode = '原来的值,NO_ENGINE_SUBSTITUTION';
3、数据插入报错Incorrect integer value: '' for column
mysql版本到5以上的都会遇到这样的问题,插入空字符要使用NULL
默认为sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION",
将其修改为sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION",重启mysql后即可
sql_mode 的其他值说明:https://blog.csdn.net/wyzxg/article/details/8787878