Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Das Erstellen einer Tabelle schlägt fehl, da die Fremdschlüsseleinschränkung falsch gebildet ist

Ich habe diese Meldung viele Male erhalten, während ich Tools von Drittanbietern verwendet habe, um Tabellen zu erstellen und dann vorhandene Tabellen einzuschränken. Es ist eines von zwei Dingen:

  • Der int Spalten haben unterschiedliche Größen
  • Der int Spalten haben unterschiedliche Flags (ohne AUTO_INCREMENT)

Als Beispiel habe ich eine Tabelle mit einem Tool erstellt, das irgendwie eine Spalte als INT(10) erstellt hat anstelle des erwarteten INT(11) . Obwohl ich gerade INT gewählt habe Beim Erstellen beider wurde es durcheinander gebracht - nie aufgespürt, warum.

Um es kurz zu machen, es ist im Allgemeinen am besten, den INT ausdrücklich anzugeben Größe beim Erstellen einer Tabelle.

In Ihrem Fall sollte Folgendes funktionieren:

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;