0

Laravels 移行を使用して、外部キーを持つ複数のテーブルを作成しようとしています。私はそのような移行テーブルに問題があります

Schema::create('problems', function($table)
        {
            $table->increments('id');
            $table->integer('created_by')->unsigned();
            $table->foreign('created_by')->references('id')->on('users');
            $table->integer('category')->unsigned();
            $table->foreign('category')->references('id')->on('categories');
            $table->timestamps();
        });

カテゴリの移行

Schema::create('categories', function($table)
        {
            $table->increments('id');
            $table->string('category_name');
            $table->timestamps();
        });

ユーザーの移行への最初の外部キーは正常に機能しますが、カテゴリ ID の外部キーにヒットするとすぐに、

SQLSTATE HY000 General Error 1215 Impossible d'ajouter des contraintes d'index externe (SQL; alter table 'problems' add constraint problems_category_foreign 外部キー ('category') 参照 'categories' ('id'))

(私はフランス語を正しく読むことができず、なぜフランス語でエラーが発生するのかわかりません。私はフランス語ではないため、フランス語を変更する方法を見つけることができず、理解することもできません)

それらが本質的に同じものであるのに、なぜこれが一方では機能し、他方では機能しないのか理解できません。

4

4 に答える 4

2

移行ファイルの順序が正しいことを確認する必要があります。たとえばid、カテゴリ テーブル自体を実際に作成する前に、カテゴリ テーブルを参照する外部キーを使用して問題テーブルを作成することはできません。

フランス語のエラーの問題については、この質問を見てください。

于 2015-02-10T06:51:18.910 に答える
1

移行の順序を変更する必要があります

|-database/
|--migrations/
|---2015_02_02_141725_create_problems_table.php
|---2015_03_01_234626_create_categories_table.php

次のようにする必要があります。

|-database/
|--migrations/
|---2015_01_01_234626_create_categories_table.php
|---2015_02_02_141725_create_problems_table.php

ついに:

php artisan migrate
于 2015-03-02T21:51:15.433 に答える
0

問題を修正して、別の移行ファイルに外部キーを追加する必要がありました。

于 2015-02-10T01:57:12.803 に答える