sql >> Base de Datos >  >> RDS >> Mysql

La creación de la tabla falla con la restricción de clave externa incorrectamente formada

Recibí este mensaje muchas veces mientras usaba herramientas de terceros para crear tablas y luego restringir las tablas existentes. Es una de dos cosas:

  • El int las columnas tienen diferentes tamaños
  • El int las columnas tienen banderas diferentes (sin AUTO_INCREMENT)

Como ejemplo, creé una tabla con una herramienta que de alguna manera creó una columna como INT(10) en lugar del esperado INT(11) . Aunque solo elegí INT al crear ambos, estaba en mal estado, nunca supe por qué.

Para resumir, generalmente es mejor indicar explícitamente el INT tamaño al crear una tabla.

En su caso, lo siguiente debería 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;