migrate时出现1215,无法建立外键,原因通常有以下几种
当id为主表字段,user_id为从表字段时
- user_id的类型和id的类型不一致
- id为无符号型,此时user_id需要加入
->unsigned()
- laravel会按照 表名顺序进行表的建立,所以主表一定要在子表之前建立,表名中的时间一定要早
当非id为主表字段(如,level),用户表的position_level为从表字段时(一个用户有一个职位,level代表职位等级) - level字段必须先建立索引(unique或者index都可以),没有索引的字段是不能建外键的(当前三点都验证过没问题的时候,如果主表字段没有建立索引,直接执行alter语句进行外键追加,还是会直接报错的;然而,如果在navicat中进行手动添加外键,navicat会自动给主表字段添加索引)PS:这个狗屁东西坑了我一个晚上!!