La Red de Conocimientos Pedagógicos - Currículum vitae - MySQL traducido incorrectamente como: No se pueden agregar restricciones de clave externa para resolver.

MySQL traducido incorrectamente como: No se pueden agregar restricciones de clave externa para resolver.

Los tipos de datos son inconsistentes.

El tipo de datos de la identificación de la tabla principal es int unsigned.

En cuanto a su subtabla, el tipo de datos hoyyb_id es int.

Porque:

INT[(M)][sin signo][relleno con ceros]

Un número entero de tamaño normal. El rango con signo es -2147483648 a 2147483647. El rango sin firmar es de 0 a 4294967295.

Dos soluciones

1. Cambiar el tipo de datos de la tabla principal a int.

2. Cambie el tipo de datos de la subtabla a int unsigned.

El siguiente es un ejemplo de simulación:

-Tabla principal, id es un entero sin signo.

mysql>Crear tabla test_main2(

->id INT unsigned NOT NULL,

->valor VARCHAR(10),

-> p>

-& gt; Clave principal (id)

-& gt;);

La consulta es normal, 0 filas están afectadas (0,01 segundos)

-Subtabla, el tipo de datos es int.

mysql>Crear tabla test_sub2(

->id INT no está vacío,

->main_id INT,

-> Valor VARCHAR(10),

->Clave principal (id),

->Restricción main_id_cons clave externa (main_id) se refiere a test_main2(id)

->);

Error 1005 (HY000): No se puede crear la tabla 'test.test_sub2' (Número de error: 150)

- Subtabla, cuando el tipo de datos es int sin firmar.

mysql>Crear tabla test_sub2(

->id INT no está vacío,

->main_id INT no está firmado,

- >Valor VARCHAR(10),

->Clave principal (id),

->Restricción main_id_cons clave externa (main_id) se refiere a test_main2(id)

-& gt;);

La consulta es normal, 0 filas están afectadas (0,02 segundos)