Otrzymałem tę wiadomość wiele razy podczas korzystania z narzędzi innych firm do tworzenia tabel, a następnie ograniczania się do istniejących tabel. Jest to jedna z dwóch rzeczy:
int
kolumny mają różne rozmiaryint
kolumny mają różne flagi (bez AUTO_INCREMENT)
Jako przykład utworzyłem tabelę za pomocą narzędzia, które w jakiś sposób utworzyło kolumnę jako INT(10)
zamiast oczekiwanego INT(11)
. Mimo że właśnie wybrałem INT
podczas tworzenia obu było pomieszane — nigdy nie udało się ustalić, dlaczego.
Krótko mówiąc, generalnie najlepiej jest jawnie podać INT
rozmiar podczas tworzenia tabeli.
W Twoim przypadku powinny działać:
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;