当我正在执行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 halt
和vagrant 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-cache
和artisan cache:clear
编辑3
如果我删除了该迁移,并且在该迁移之后进行了每次迁移,那么错误就消失了,所以我认为错误发生在特定的迁移中?
当我在迁移中没有外键时,我怎么能得到foreign-key
错误?
答案 0 :(得分:0)
显然是一些缓存问题。我通过完全删除数据库并再次创建它来解决它。之后,迁移和重新种植工作完美无缺。