在laravel migration文件中,我有以下代码:
Schema::table('stripe_customers', function (Blueprint $table) {
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
});
' USER_ID'是表格中的现有无符号整数列' stripe_customers'。
' ID'是' users'中的主键列。
但是,当我运行migrate命令时,我收到以下错误消息:
[Illuminate\Database\QueryException]
SQLSTATE[HY000]: General error: 1005 Can't create table 'thedealerapp.#sql-47a_78859' (errno: 150) (SQL:
alter table `stripe_customers` add constraint stripe_customers_user_id_foreign foreign key (`user_id`)
references `users` (`id`))
[PDOException]
SQLSTATE[HY000]: General error: 1005 Can't create table 'thedealerapp.#sql-47a_78859' (errno: 150)
为什么会这样?
答案 0 :(得分:2)
因此,有一些不同的可能原因导致无法创建外键。
users
。id
已编入索引? MySQL需要两个表上的索引来创建外键。隐式创建stripe_customers
。user_id
时,请确保users
。id
。stripe_customers
内容可能无法通过外键检查?这会导致创建外键时出错。