Mysql
 sql >> Base de données >  >> RDS >> Mysql

La création de la table échoue avec la contrainte de clé étrangère mal formée

J'ai reçu ce message à plusieurs reprises lors de l'utilisation d'outils tiers pour créer des tables, puis contraindre par rapport aux tables existantes. C'est soit l'une des deux choses :

  • Le int les colonnes ont des tailles différentes
  • Le int les colonnes ont des drapeaux différents (sans AUTO_INCREMENT)

Par exemple, j'ai créé une table avec un outil qui a en quelque sorte créé une colonne sous la forme INT(10) au lieu du INT(11) attendu . Même si je viens de choisir INT lors de la création des deux, c'était foiré - jamais trouvé pourquoi.

Pour faire court, il est généralement préférable d'indiquer explicitement le INT taille lors de la création d'un tableau.

Dans votre cas, ce qui suit devrait fonctionner :

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;