Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

A criação da tabela falha com a restrição de chave estrangeira formada incorretamente


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;