2025-07-19 解决Laravel迁移中"外键约束格式不正确"错误(errno:150)的完整指南 解决Laravel迁移中"外键约束格式不正确"错误(errno:150)的完整指南 一、错误背后的真相:为什么会出现errno: 150?上周三凌晨2点,当我正在为一个电商项目编写库存管理模块时,突然在控制台看到了这个熟悉的错误:bash SQLSTATE[HY000]: General error: 1005 Can't create table `ecommerce`.`product_skus` (errno: 150 "Foreign key constraint is incorrectly formed")这种错误通常发生在以下场景: 字段类型不匹配:外键字段与被引用字段的数据类型不一致 字符集/排序规则冲突:utf8mb4与utf8混用的情况最常见 引擎类型不符:MyISAM与InnoDB引擎混用 字段长度差异:VARCHAR(255)试图引用VARCHAR(191) 引用字段非索引:被引用字段必须是PRIMARY KEY或INDEX 迁移顺序错误:先创建了外键约束,后创建被引用的表 二、五大实战解决方案(附代码示例)方案1:精确匹配字段定义php // 错误的写法(容易引发errno: 150) $table->foreign('categor... 2025年07月19日 4 阅读 0 评论