2017-08-13 25 views
0

私は2つのテーブル "シアター"と "キューリスト"を持っています。 「劇場」テーブルは既に作成されています。 「キュベリスト」テーブルでは、「エリア」と「stn」をテーブル「劇場」の外部キーとして作成しました。しかし、私は外来キーの制約が間違って形成されるというエラーが発生します。しかし、私はエラーを理解することができませんでした。外部キー制約が正しくありません - Laravel

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'); 

}); 

Schema::create('cubelists', function (Blueprint $table) { 
    $table->string('mvie_name'); 
    $table->foreign('mvie_name')->references('movie_name')->on('movies'); 
    $table->string('thtr_name'); 
    $table->foreign('thtr_name')->references('theater_name')- 
    >on('theaters'); 
    $table->string('area'); 
    $table->foreign('area')->references('area_name')->on('theaters'); 
    $table->string('stn'); 
    $table->foreign('stn')->references('station')->on('theaters'); 
    $table->primary(array('mvie_name','thtr_name','area','stn')); 
    $table->string('type'); 
    $table->string('subtype'); 
    $table->date('validity'); 
    $table->string('show'); 

}); 

エラーが候補キーを参照する必要があります

C:\xampp\htdocs\boras>php artisan migrate 
Migration table created successfully. 


    [Illuminate\Database\QueryException] 
    SQLSTATE[HY000]: General error: 1005 Can't create table `boras_cachii`.`#sql-a10_ 
    5a` (errno: 150 "Foreign key constraint is incorrectly formed") (SQL: alter table 
    `cubelists` add constraint cubelists_area_foreign foreign key (`area`) reference 
    s `theaters` (`area_name`)) 



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

あなたのDBエンジンによっては、構文上、削除時に制約[名前]外部キー([列])参照[テーブル]([othercolumn])を追加する必要があります。しかし、 "on delete/update"の部分は欠落しているようです。私は ' - > onDelete( 'cascade') - > onUpdate( 'cascade')'をあなたの呼び出しに追加して確実に追加する必要があると思います。 –

+0

@NiettheDarkAbsol彼はXAMPPを使用しているのでOPでMariaDBを使用しているはずです – Thamilan

+0

- > onDelete( 'cascade') - > onUpdate( 'cascade')を追加しようとしましたが動作しません – Muthu

答えて

0

外部キー制約です。私は何がわからないキューリストを意味するが、おそらく "劇場"の主キーを参照したい。つまり、3つのの列theater_name、area_name、stationを参照するための外部キー制約が1つ必要です。それらの列の個々の制約ではありません。

MySQLは、最初にやろうとしたことから離れてしまうかもしれませんが、とにかくやっていないかもしれません。 "実施しない"の場合は13.1.17.6 Using FOREIGN KEY Constraintsを検索してください。

関連する問題