mysql--sql_mode报错整理

 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

posted @ 2019-07-06 02:15  PHPer100  阅读(656)  评论(0编辑  收藏  举报