2017-02-18 37 views
0

Im учится laravel, и теперь им не удается перенести базу данных. Я уже создал db в phpmyadmin, прочитал документацию и провел исследование в сети по этой проблеме. Однако, когда я сделать мигрируют, он продолжает посылать же сообщение:Laravel - не удалось перенести DB

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'); 
    }); 
+0

, что DB двигатель вы с помощью? – Paras

ответ

1

Laravel пытается запустить ваши миграции в порядке 1) времени, 2) алфавит. Так как вы дали обе свои миграции одновременно, это происходит в алфавитном порядке.

На практике это означает, что вы сначала пытаетесь создать таблицу автомобилей с ограничением внешнего ключа, указывающим на таблицы компаний, но эта таблица еще не существует, поскольку она будет создана в следующем миграция.

Назовите свои миграции должным образом, и он должен решить сам. :)

+0

Я изменил дату в имени файла, чтобы заставить их мигрировать по порядку. И это работает. Благодаря!! – Adato

1

Да, как Джоэл Саид, будьте осторожны с соглашением об именовании миграции. Чтобы избежать этих ошибок, вы можете использовать миграции команд

step1
Run ниже из командной строки

php artisan make:migration create_companies_table 

step2

Это позволит сделать пустую миграцию схему в базе данных, а затем редактировать он ниже

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

шаг 3 Run ниже из командной строки

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'); 
    }); 
+0

Не знал, что можно сделать миграцию файлов. Теперь он работает. Благодаря! – Adato

+0

, если это вам помогло, отметьте ответ как правильно – sumit

+0

Как это сделать? я не знал, что мы можем отметить ответы как правильные. – Adato

 Смежные вопросы

  • Нет связанных вопросов^_^