2017-09-21 6 views
0

enter image description here Laravel을 처음 사용했습니다. 이전에 users 테이블을 만들었습니다. employment 테이블이 마이그레이션에서 생성되었습니다. 다음 이주로 나는 users 표를 job_id에 붙이면 employment 표에 users 표를 추가한다. 마이그레이션을 실행하면 위의 오류가 발생합니다.(errno : 150 "외래 키 제약 조건이 잘못 형성되었습니다")

참고 : job_idemployment 테이블에 넣고 users 테이블을 job_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

오류가 순수도 laravel, https://stackoverflow.com/search?q=Foreign+key+constraint+is+incorrectly+formed를 PHP로하지, MySQL의 관련이있다, 당신은 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-에 마이그레이션 변화 first-serve basis. 외부 키가 참조하는 테이블이 외부 키가 들어있는 테이블보다 먼저 이주되는지 확인하십시오.

이 경우 프로젝트 디렉토리에서 고용 테이블을 마이그레이션하기 전에 사용자 테이블에 대한 마이그레이션이 존재하도록 마이그레이션 파일의 이름을 변경할 수 있습니다.