Laravel无法添加外键

时间:2017-12-06 08:04:26

标签: php laravel migration

当我正在执行migrate:fresh并且它抛出时,我的迁移文件中出现了问题:

SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint 
(SQL: create table `product` (`test` int not null) default character 
set utf8mb4 collate utf8mb4_unicode_ci)

我已经删除了该迁移中的所有内容,只留下了一个字段以便调试可能存在的问题,这是现在的迁移以及给我这个错误的那个:

public function up()
{
    Schema::create('product', function (Blueprint $table) {
        $table->integer('test');
    });
}

我尝试过做composer dump-autoload但没有改变。

修改

执行vagrant haltvagrant up之后,我在migrate:fresh之后遇到的第一个错误是:

SQLSTATE[23000]: Integrity constraint violation: 1022 Can't write; 
duplicate key in table '#sql-4ef_4' (SQL: alter table 
`product_shipping_country` add constraint `fk_psc_product` foreign key 
(`product_id`) references `product` (`content_id`) on delete CASCADE on 
update CASCADE)

但是在我运行migrate:fresh之后不久,这个错误就不复存在了,而我又重新找到了这个错误

编辑2

我尝试手动删除数据库,同样的事情发生了。同时清除composer clear-cacheartisan cache:clear

编辑3

如果我删除了该迁移,并且在该迁移之后进行了每次迁移,那么错误就消失了,所以我认为错误发生在特定的迁移中?

当我在迁移中没有外键时,我怎么能得到foreign-key错误?

1 个答案:

答案 0 :(得分:0)

显然是一些缓存问题。我通过完全删除数据库并再次创建它来解决它。之后,迁移和重新种植工作完美无缺。