サードパーティのツールを使用してテーブルを作成し、既存のテーブルに対して制約を行っているときに、このメッセージを何度も受け取りました。これは、次の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;