Ik heb dit bericht vaak ontvangen tijdens het gebruik van tools van derden om tabellen te maken en vervolgens te beperken tot bestaande tabellen. Het is een van twee dingen:
- De
int
kolommen hebben verschillende afmetingen - De
int
kolommen hebben verschillende vlaggen (zonder AUTO_INCREMENT)
Als voorbeeld heb ik een tabel gemaakt met een tool die op de een of andere manier een kolom heeft gemaakt als INT(10)
in plaats van de verwachte INT(11)
. Ook al heb ik zojuist INT
gekozen bij het maken van beide was het in de war - nooit opgespoord waarom.
Om een lang verhaal kort te maken, het is over het algemeen het beste om expliciet de INT
. te vermelden grootte bij het maken van een tabel.
In jouw geval zou het volgende moeten werken:
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;