我尝试将thread
表链接到message
表,但在迁移时,我收到一条错误消息:
SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL: alter table `thread` add constraint `thread_id_foreign` foreign key (`id`) references `message` (`thread_id`))
我做错了什么?我如何才能做到这一点?
用户迁移:
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('email')->unique();
$table->string('full_name');
$table->string('password');
$table->string('bio');
$table->rememberToken();
$table->timestamps();
});
}
下面是线程迁移:
Schema::create('thread', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->foreign('id')
->references('thread_id')
->on('message');
});
以下是邮件迁移:
Schema::create('message', function (Blueprint $table) {
$table->id();
$table->unsignedInteger('user_id');
$table->unsignedInteger('thread_id');
$table->string('body');
$table->foreign('user_id')
->references('id')
->on('users')
->onDelete('cascade');
});
2条答案
按热度按时间mhd8tkvw1#
您需要使用unsignedBigInteger作为外键列的
并且应该为子表而不是父表设置外键
试试看:
bvpmtnay2#
如果要将线索表链接到消息,请按如下方式使用
注意:请确保先创建消息迁移,然后再创建线程迁移
但如果您希望将消息表链接到线程表,则可以这样使用它