我无法创建外表键:
$table->increments('rt_id');
$table->integer('issued_id')->unsigned();
$table->foreign('issued_id')->references('issue_id')->on('book_issues');
$table->integer('book_id')->unsigned();
$table->foreign('book_id')->references('id')->on('book_details');
我也尝试过:
$table->bigIncrements('rt_id');
$table->unsignedBigInteger('issued_id');
$table->foreign('issued_id')->references('issue_id')->on('book_issues');
$table->unsignedBigInteger('book_id');
$table->foreign('book_id')->references('id')->on('book_details');
答案 0 :(得分:0)
查看两个表,我发现为了获得成功的外键... 被引用字段和引用字段必须具有完全相同的数据类型和选项。
因此,在您的情况下,应删除unsignedBigInteger
和unsigned
,只需使用integer
,如下所示:
$table->integer('issued_id')
让我知道这是否对您有用
答案 1 :(得分:0)
我刚刚重新检查了所有字段和数据类型,观察到我对主键使用了增量,而在外键中我采用了integer('book_id')-> unsigned() 并且在迁移时,我已经迁移了主表,因此,我使用了php artisan migrate:fresh命令,这一次,它正在迁移外部表时间,因此,我得到了错误。 在首先放置我的外键表,然后最后放置主键表之前。 因此,我更改了模型名称,并根据关键约束进行了替换,因为主表应首先存储在迁移文件夹中,即使有时在迁移时它不会按顺序在ur文件夹中迁移。 所以,我用php artisan migration:fresh 此命令将按顺序迁移所有表。