Laravel - 无法迁移数据库

时间:2017-02-18 19:48:55

标签: laravel migration

我正在学习laravel,现在我无法迁移数据库。我已经在phpmyadmin中创建了数据库,已阅读文档并在网上对该问题进行了研究。但是,当我进行迁移时,它会不断发送相同的消息:

SQLSTATE[HY000]: General error: 1005 Can't create table `YYYY`.`#sql-269c_1c1` (errno: 150 "Foreign key constraint is incorrectly formed") (SQL: alter table ` cars` add constraint `cars_company_id_foreign` foreign key (`Company_id`) references `companies` (`id`) on delete cascade on update cascade)

这是代码:

2014_10_12_000000_create_cars_table

Schema::create('cars', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('Company_id')->unsigned();
        $table->foreign('Company_id')->references('id')->on('companies')->onDelete('cascade')->onUpdate('cascade');
        $table->string('Model');
    });

2014_10_12_000000_create_companies_table

Schema::create('companies', function (Blueprint $table) {
        $table->increments('id');
        $table->string('Company');
    });

2 个答案:

答案 0 :(得分:1)

Laravel尝试按1)时间顺序运行迁移,2)字母表。由于您同时进行了两次迁移,因此按字母顺序排列。

这在实践中意味着您首先尝试创建汽车表,外键约束指向表公司 - 但此表尚不存在,因为它将在下一次迁移中创建

正确命名您的迁移,它应该自行解决。 :)

答案 1 :(得分:1)

是的Joel Said在迁移命名约定上要小心。 要避免这些错误,您可以使用迁移命令

<强>步骤1
从命令行运行以下

php artisan make:migration create_companies_table

step2

这将在您的数据库中生成空白迁移架构,然后按如下所示进行编辑

Schema::create('companies', function (Blueprint $table) {
        $table->increments('id');
        $table->string('Company');
    });

第3步 从命令行运行以下

php artisan make:migration create_companies_table

第4步 这将在您的数据库中进行空白迁移模式,然后按如下所示进行编辑

Schema::create('cars', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('Company_id')->unsigned();
        $table->foreign('Company_id')->references('id')->on('companies')->onDelete('cascade')->onUpdate('cascade');
        $table->string('Model');
    });