3

テーブルを作成しようとしていますが、netbeans が DB の最初のテーブルでエラーになるとすぐにスクリプトが失敗します。

これはどのように解決できますか?

CREATE TABLE filmy
(
    Film_Id int NOT NULL,
    Nazwa varchar(250),
    Adres varchar(250),
    Data_Utworzenia date,
    Komentarz varchar(250),
    Gat_Id int,
    Sub_Id int,
    Aut_Id int,
    User_Id int,

    Primary Key (Film_Id),
    CONSTRAINT fk_GatFilmy FOREIGN KEY (Gat_Id) REFERENCES gatunek(Gat_Id),
    CONSTRAINT fk_SubFilmy FOREIGN KEY (Sub_Id) REFERENCES subgatunek(Sub_Id),
    CONSTRAINT fk_AutFilmy FOREIGN KEY (Aut_Id) REFERENCES autor(Aut_Id),
    CONSTRAINT fk_UserFilmy FOREIGN KEY (User_Id) REFERENCES users(User_Id)
)
4

5 に答える 5

10

使用show innodb status- 出力 (中央付近) に埋もれているのは、「最後の外部キー エラー」セクションです。テーブルの作成が失敗した理由を正確に説明します。

通常、参照 FK フィールドが存在しない (タイプミス、間違ったテーブル) か、フィールド タイプの不一致が原因です。FK リンク フィールドは、定義と正確に一致する必要があります。char(1) フィールドは char(5) フィールドなどに FK できません...

注: MySQL 5.5 では、このコマンドはshow engine innodb status(thanks kewpiedoll99) です。

于 2011-11-09T19:26:34.560 に答える
1

これが私の解決策です:

CREATE TABLE filmy 
( 
    Film_Id           int           NOT NULL, 
    Nazwa             varchar(250)      NULL, 
    Adres             varchar(250)      NULL, 
    Data_Utworzenia   date              DEFAULT '0000-00-00', 
    Komentarz         varchar(250)      NULL, 
    Gat_Id            int               NULL, 
    Sub_Id            int               NULL, 
    Aut_Id            int               NULL, 
    User_Id           int               NULL, 
 Primary Key (Film_Id, Gat_Id, Sub_Id, Aut_Id, User_Id )
) ENGINE=INNODB;

外部キー制約は、gat、sub、aut、およびユーザーを作成した後に実行されます。そうしないと、テーブル制約を実現するために 2 つのテーブルが存在することを ide が認識しません! 試してみてください:テーブルを変更して、制約を追加してくださいgatfilmy外部キー(gat_id)は、一貫性を保つ必要がある削除制限の更新制限でgat(gat_id)を参照します。テーブルの名前は gat または gatunek のいずれかですが、両方を指定することはできません。gat と gatunek の両方を定義しない場合、CPU はどのようにしてどちらが gat であるかを認識しますか? 残りの制約を試してみてください。テーブルを変更する前に、すべてのテーブルを作成する必要があることを忘れないでください。

CONSTRAINT fk_GatFilmy FOREIGN KEY (Gat_Id) REFERENCES gatunek(Gat_Id), 
CONSTRAINT fk_SubFilmy FOREIGN KEY (Sub_Id) REFERENCES subgatunek(Sub_Id), 
CONSTRAINT fk_AutFilmy FOREIGN KEY (Aut_Id) REFERENCES autor(Aut_Id), 
CONSTRAINT fk_UserFilmy FOREIGN KEY (User_Id) REFERENCES users(User_Id) 
于 2011-12-29T00:28:57.663 に答える
0

通常、インデックスがない列に外部キーを追加しようとすると、このエラーが発生します。表示されているSQLでは、関連付けられている列がどれも機能していないことに気付きました。

于 2011-11-09T19:34:28.037 に答える
0

コード 150 は外部キー エラーです。

参照されているテーブルまたは列の 1 つが存在しないか (まだ、スクリプトの後半にある可能性があります)、タイプ/長さ/照合順序/文字セットが一致しません。それらを順番にコメントアウトして、どちらかを確認します。

またはALTER TABLE、すべての CREATE が実行された後に別のコマンドを実行します

于 2011-11-09T19:21:52.880 に答える
0

他のテーブルとの関係でこのテーブル名 (filmy) を使用した後、ドロップした可能性があります。関係を確認し、このテーブル名で使用する場所をすべて削除するか、テーブル名を変更します。たとえば、「filmy1」を使用します。テーブル名を変更すると、機能しました。

この作品を願っています。

于 2013-09-06T17:49:38.117 に答える