我在XAMPP堆栈上使用Laravel 5.8。
考虑这两个迁移以创建两个表:
post_categories表。
Schema::create('post_categories', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->string('slug');
$table->string('status');
$table->timestamps();
});
发布表格。
Schema::create('posts', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->string('slug');
$table->mediumText('description');
$table->integer('views');
$table->integer('post_category_id')->unsigned();
$table->integer('user_id')->unsigned();
$table->timestamps();
$table->foreign('post_category_id')->references('id')->on('post_categories');
});
运行php artisan migrate
时,出现以下错误:
一般错误:1005无法创建表
testdb
。#sql-38d8_102
(错误号:150“外键约束格式不正确”)。
我尝试同时运行这两者:
php artisan migrate
php artisan migrate:fresh
我还尝试将post_category_id
字段更改为规则的整数,而不是无符号的:没有区别。
还重新启动了MySQL服务器和Apache服务,没有任何改变。
post_categories
迁移在之前{strong>之前运行。 posts
表已创建,但外键未创建。
为什么会引发此错误,我该如何解决?
答案 0 :(得分:4)
这可能是因为您要创建一个将整数字段更改为大整数字段的外键。在您的信息迁移中,代替此
$table->bigInteger('post_category_id')->unsigned();
执行此操作:
make
答案 1 :(得分:0)
代替此:
$table->integer('post_category_id')->unsigned();
尝试一下:
$table->unsignedBigInteger('post_category_id');
答案 2 :(得分:0)
在链接两个表(用户表和存款表)时出现了相同的错误。我尝试了很多选择,但是它们没有用。但是,这对我来说是创建存款迁移的有效方法:
$table->unsignedInteger('user_id');
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');