2017-08-13 12 views
0

私はテーブル "劇場"を持っています。 (theater_name、area_name、station)はコンポジットkey.Andテーブルの "cubelists"には、テーブル "theater"の(theater_name、area_name、station)を参照する列(thtr_name、area、stn)があります。コンポジットキーで外部キー制約が正しく形成されていません

ここで問題となるのは、テーブル "シアター"の列の - (theater_name、area_name、station)はコンポジットキーなので一意です。しかし、それぞれの列は別々には一意ではありません。

次に、これらの列をテーブル「キューリスト」から参照するにはどうすればよいですか?

Schema::create('theaters', function (Blueprint $table) { 

     $table->string('theater_name'); 
     $table->string('area_name'); 
     $table->string('station'); 
     $table->primary(array('theater_name','area_name','station')); 
     $table->text('address'); 
     $table->bigInteger('phno'); 
     $table->string('contact_person'); 

    }); 



    public function up() 
    { 
    // 
    Schema::create('cubelists', function (Blueprint $table) { 
     $table->string('mvie_name'); 
     $table->foreign('mvie_name')->references('movie_name')->on('movies'); 
     $table->string('thtr_name'); 

     $table->string('area'); 

     $table->string('stn'); 

     $table->foreign(array('thtr_name','area','stn'))- 
     >references(array('theater_name','area_name','station'))- 
     >on('theaters'); 
     $table->primary(array('mvie_name','thtr_name','area','stn')); 
     $table->string('type'); 
     $table->string('subtype'); 
     $table->date('validity'); 
     $table->string('show'); 

    }); 

} 

私は上記のコードを与えると私はあなたが最初の外部キー、その後、テーブルを作成する必要があります

Migration table created successfully. 


    [Illuminate\Database\QueryException] 
    SQLSTATE[HY000]: General error: 1005 Can't create table `boras_cachii`.`#sql-a10_ 
    112` (errno: 150 "Foreign key constraint is incorrectly formed") (SQL: alter tabl 
    e `agreements` add constraint agreements_area_name_foreign foreign key (`area_nam 
    e`) references `cubelists` (`area`)) 



    [PDOException] 
    SQLSTATE[HY000]: General error: 1005 Can't create table `boras_cachii`.`#sql-a10_ 
    112` (errno: 150 "Foreign key constraint is incorrectly formed") 
+0

boras_cachiiはデータベースの名前です – Muthu

答えて

1

としてエラーが発生します。 cubelistsがそれを参照しているので、

Schema::create('cubelists', function (Blueprint $table) { 
     $table->string('mvie_name'); 
     $table->string('area'); 
     $table->string('stn'); 
     $table->primary(array('mvie_name','thtr_name','area','stn')); 
     $table->string('type'); 
     $table->string('subtype'); 
     $table->date('validity'); 
     $table->string('show'); 

      $table->foreign(array('thtr_name','area','stn')) 
      ->references(array('theater_name','area_name','station')) 
      ->on('theaters'); 

      $table->foreign('mvie_name') 
      ->references('movie_name') 
      ->on('movies'); 


    }); 

またtheatersの表は、最初に移行する必要があります。また、外部キー列と参照列が同じタイプまたは長さであることを確認してください。

+0

私は劇場のテーブルを作成し、それを移行しました。それでも私は同じエラーが発生する – Muthu

+0

config/database.php mysqlでfalseに厳密に設定に行く –

+0

ありがとう!!出来た!! – Muthu

関連する問題