Recebi esta mensagem muitas vezes ao usar ferramentas de terceiros para criar tabelas e, em seguida, restringir as tabelas existentes. É uma das duas coisas:
- O
int
as colunas têm tamanhos diferentes - O
int
colunas têm sinalizadores diferentes (sem AUTO_INCREMENT)
Como exemplo, criei uma tabela com uma ferramenta que de alguma forma criou uma coluna como
INT(10)
em vez do esperado INT(11)
. Mesmo que eu tenha escolhido INT
ao criar ambos, estava confuso - nunca rastreou o porquê. Para encurtar a história, geralmente é melhor declarar explicitamente o
INT
tamanho ao criar uma tabela. No seu caso, o seguinte deve funcionar:
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;