sql >> データベース >  >> RDS >> Mysql

外部キー制約が正しく形成されていないため、テーブルの作成が失敗する

    サードパーティのツールを使用してテーブルを作成し、既存のテーブルに対して制約を行っているときに、このメッセージを何度も受け取りました。これは、次の2つのいずれかです。

    • int 列のサイズは異なります
    • int 列には異なるフラグがあります(AUTO_INCREMENTなし)

    例として、INT(10)として列を作成するツールを使用してテーブルを作成しました。 予想されるINT(11)の代わりに 。 INTを選択しただけなのに 両方を作成するとき、それはめちゃくちゃになりました-理由を追跡することはありませんでした。

    簡単に言うと、一般的にINTを明示的に記述するのが最善です。 テーブル作成時のサイズ。

    あなたの場合、以下が機能するはずです:

    create table users (id int(11) not null auto_increment
    , username varchar(255) NOT NULL
    , password varchar(255) NOT NULL
    , active int NOT NULL
    , PRIMARY KEY (id))
    ENGINE=InnoDB COLLATE=utf8_unicode_ci;
    
    create table athing (id int(11) not null auto_increment
    , name varchar(255) not null
    , status varchar(255) not null
    , created_by_user_id int(11) not null
    , PRIMARY KEY (id)
    , CONSTRAINT athing_fk1 FOREIGN KEY (created_by_user_id) REFERENCES users (id)
    ) ENGINE=InnoDB COLLATE=utf8_unicode_ci;
    



    1. 空のテーブルのMAX()をNULLではなく0として扱う方法

    2. MySQLでバッチ挿入を行う方法

    3. mysqlバイナリログを使用してdropdatabaseコマンドから復元するにはどうすればよいですか?

    4. macOSのPostgreSQLログはどこにありますか?