2017-09-21 14 views
0

enter image description here私はLaravelを初めて使っています。以前はテーブルusersを作成しました。 employment移行でテーブルが作成されました。次回のマイグレーションとして、usersテーブルをjob_idに追加してemploymentテーブルにusersテーブルを追加しました。移行を実行すると、上記のエラーが発生します。(errno:150 "外部キー制約が正しく形成されていません")

注:job_idemploymentに、usersjob_idと表記する必要があります。 soumyaは私のデータベース名

外部キー制約なしで移行を実行すると、完全に機能します。

Migations:雇用テーブル

public function up() 
{ 
    Schema::create('employment', function (Blueprint $table) { 
     $table->increments('job_id'); 
     $table->string('job_title'); 
     $table->string('job_description')->nullable()->default(NULL); 
     $table->string('slug')->unique(); 


     $table->timestamps(); 
    }); 
} 
    public function down() 
{ 
    Schema::drop('employment'); 
} 

移行変更usersテーブル

public function up() 
{ 
    Schema::table('users', function (Blueprint $table) { 
     $table->integer('job_id')->after('deleted'); 
     $table->foreign('job_id')->references('job_id')->on('employment'); 
    }); 
} 

public function down() 
{ 
    Schema::table('users', function (Blueprint $table) { 
     $table->dropForeign('users_job_id_foreign'); 
     $table->dropColumn('job_id'); 

    }); 
} 
+0

はmysqlのエラー原因を得た後にエラーが、PHPもlaravel、https://stackoverflow.com/search?q=Foreign+key+constraint+is+incorrectly+formedしない、MySQLへの純粋に関連していますPHP側の編集は、ケーキの平和になります。 – hassan

+0

[Migration:laravelに外部キー制約を追加できません](https://stackoverflow.com/questions/22615926/migration-cannot-add-foreign-key-constraint-in-laravel) – hassan

+0

この複製を変更してください。 – Maraboc

答えて

0

laravelでこの

public function up() 
{ 
    Schema::table('users', function (Blueprint $table) { 
     $table->unsignedInteger('job_id'); 
     $table->foreign('job_id')->references('job_id')->on('employment'); 
    }); 
} 
+0

整合性違反が発生しました – Shyamali

+0

mmmは完全なエラーを表示できますか? –

+0

私はスクリーンショットを追加しました。 "soumya"は私のデータベース名です – Shyamali

0

などのユーザーの移行が、テーブルが最初-come-に移行される変更ファーストサブベース。外部キーが参照しているテーブルが、外部キーを含むテーブルの前に移行されていることを確認します。

このため、プロジェクトディレクトリ内の雇用テーブルの移行前に、ユーザーテーブルの移行が存在するように、移行ファイルの名前を変更することができます。

関連する問題