Mysql
 sql >> Database >  >> RDS >> Mysql

La creazione della tabella non riesce con il vincolo di chiave esterna formato in modo errato

Ho ricevuto questo messaggio molte volte durante l'utilizzo di strumenti di terze parti per creare tabelle e quindi vincolare le tabelle esistenti. È una delle due cose:

  • Il int le colonne hanno dimensioni diverse
  • Il int le colonne hanno flag diversi (senza AUTO_INCREMENT)

Ad esempio, ho creato una tabella con uno strumento che in qualche modo ha creato una colonna come INT(10) invece del previsto INT(11) . Anche se ho appena scelto INT durante la creazione di entrambi, è stato incasinato - non è mai stato rintracciato il motivo.

Per farla breve, generalmente è meglio dichiarare esplicitamente INT dimensione durante la creazione di una tabella.

Nel tuo caso, dovrebbe funzionare quanto segue:

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;