无法在Laravel中添加外键

时间:2017-02-23 15:54:03

标签: mysql laravel laravel-5 laravel-5.2 laravel-5.1

在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)  

为什么会这样?

1 个答案:

答案 0 :(得分:2)

因此,有一些不同的可能原因导致无法创建外键。

  • usersid已编入索引? MySQL需要两个表上的索引来创建外键。隐式创建stripe_customersuser_id时,请确保usersid
  • 您是否有stripe_customers内容可能无法通过外键检查?这会导致创建外键时出错。
  • 您是否确认两个表的列类型相同? MySQL将要求两者都是相同的
  • 您能否确认两个表位于同一架构中?如果您的某个表以某种方式位于不同的数据库中,则MySQL需要明确引用该数据库。