由于外键失败,无法使用迁移在laravel 5.5中创建表

时间:2018-02-06 09:30:59

标签: mysql laravel

运行迁移命令时出现以下错误

  

SQLSTATE [HY000]:常规错误:1005无法创建表plt.title()test(错误号:150“外键约束我     s错误形成“)(SQL:alter table #sql-644_119添加约束show_packages外来     密钥(show_packages_package_id_foreign)引用package_idrent_package_no))

这些是我的桌子 enter image description here

我该如何解决?

2 个答案:

答案 0 :(得分:2)

迁移订单问题在这里 确保在运行此迁移之前创建了外部表(rent_package_no& rent_lend_categories)

尝试使用以下代码:

Schema::create('show_packages', function(Blueprint $table) { 
    $table - > increments('id');
    $table - > integer('pack_id') - > unsigned();
    $table - > integer('cat_id') - > unsigned();
    $table - > timestamps();
    $table - > foreign('pack_id') - > references('id') - > on('rent_package_no')->onUpdate('cascade')->onDelete('cascade');
    $table - > foreign('cat_id') - > references('id') - > on('rent_lend_categories')->onUpdate('cascade')->onDelete('cascade'); 
});

答案 1 :(得分:0)

检查迁移的顺序。如果您的migrate命令试图在rent_package_no表之前创建show_packages表,那么MySQL将会出现这种情况。它似乎按照日期顺序排列,从最旧到最新。换句话说,它试图引用的表上的cat_id应该存在。