做了一个数据库迁移后报错:
[Err] 1055 - Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'longyuan.u.name' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
原因:目前数据库版本比之前数据库版本高,
上网查询了一下资料发现应该是数据库版本的问题,本地环境的数据库版本比较低,测试环境上的数据库版本比较高,在5.7.5以上,sql的默认模式配置是ONLY_FULL_GROUP_BY,大概意思可能就是如果有用到sum之类的函数,要把字段都加入group by里吧。
这样就不会报错了。
解决方法:红框内为改动范围,这里我将所有用到sum函数的字段都加入group by聚合里,就可以解决了。
原文:https://blog.youkuaiyun.com/qq_41737716/article/details/80566407
MySQL错误:Can't create table‘..’ (errno:150)解决方案:
https://blog.youkuaiyun.com/w_linux/article/details/80357839
1、检查sc表的外键字段的类型以及大小是否和s表c表完全一致
2、试图引用的其中一个外键没有建立起索引,或者不是一个primary key , 如果其中一个不是primary key 的放,你必须为它创建一个索引。
3、一个或两个表是MyISAM引擎的表,若想要使用外键约束,必须是InnoDB引擎
https://blog.youkuaiyun.com/yiluxiangqian7715/article/details/47747613
1、外键的引用类型不一样,如主键是int外键是char
2、找不到主表中引用的列
3、引用的字段和外键的字符编码不一致,也可能存储引擎不一样
4、引用的字段和外键的约束不同
我出现的问题就是第4种,我的外键中被binary修饰了,然后引用的字段中没有binary修饰。因此建表失败,当我加上binary时建表成功了。