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;