当我运行php artisan migrate时,我不断收到此错误:
[照亮\数据库\ QueryException] SQLSTATE [HY000]:常规错误:1005无法创建表
binomi
。#sql-3910_c0b
(错误:150"外键约束形成错误") (SQL:alter table users添加约束users_activity_foreign
foreign 密钥(activity
)在删除级联上引用activity
(id
) [PDOException] SQLSTATE [HY000]:常规错误:1005无法创建表binomi
。#sql-3910_c0b
(错误:150"外键约束形成错误")
以下是我的用户和活动模型的架构,这些是应用中唯一的型号。
用户迁移:
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->string('password');
$table->integer('activity');
$table->rememberToken();
$table->timestamps();
});
Schema::table('users', function($table){
$table->foreign('activity')->references('id')->on('activity')->onDelete('cascade');
}
活动迁移:
Schema::create('activty', function (Blueprint $table) {
$table->increments('id');
$table->string('label');
});
答案 0 :(得分:2)
将unsigned()
修饰符添加到外键列:
Schema::create('users', function (Blueprint $table) {
...
$table->integer('activity')->unsigned();
$table->rememberToken();
$table->timestamps();
});
答案 1 :(得分:1)
您的活动表有拼写错误,在架构创建中显示activty
。另外,我建议将其重命名为activities
,除非你只有一个。
答案 2 :(得分:0)
increments()
自动指定为无符号。
因此,请确保在下面的代码中添加unsigned:
$table->integer('activity')->unsigned();
还要检查是否输了错误