Jeg har modtaget denne besked mange gange, mens jeg brugte 3. parts værktøjer til at oprette tabeller og derefter begrænse mod eksisterende tabeller. Det er enten én af to ting:
int
kolonner har forskellige størrelserint
kolonner har forskellige flag (uden AUTO_INCREMENT)
Som et eksempel oprettede jeg en tabel med et værktøj, der på en eller anden måde oprettede en kolonne som INT(10)
i stedet for den forventede INT(11)
. Selvom jeg lige har valgt INT
når du oprettede begge, blev det rodet - aldrig fundet hvorfor.
Lang historie kort, det er generelt bedst at udtrykkeligt angive INT
størrelse, når du opretter en tabel.
I dit tilfælde burde følgende virke:
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;