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

Código de error:1005. No se puede crear la tabla '...' (errno:150)

Código de error:1005:hay una referencia de clave principal incorrecta en su código

Por lo general, se debe a un campo de clave externa al que se hace referencia que no existe. Es posible que tenga un error tipográfico, o verifique si debería ser el mismo, o hay una falta de coincidencia en el tipo de campo. Los campos vinculados a claves foráneas deben coincidir exactamente con las definiciones.

Algunas causas conocidas pueden ser:

  1. El tipo y/o el tamaño de los dos campos clave no coinciden exactamente. Por ejemplo, si uno es INT(10) el campo clave debe ser INT(10) también y no INT(11) o TINYINT . Es posible que desee confirmar el tamaño del campo con SHOW CREATE TABLE porque Query Browser a veces mostrará visualmente solo INTEGER para ambos INT(10) y INT(11) . También debe verificar que uno no esté SIGNED y el otro es UNSIGNED . Ambos deben ser exactamente iguales.
  2. Uno de los campos clave al que intenta hacer referencia no tiene un índice y/o no es una clave principal. Si uno de los campos de la relación no es una clave principal, debe crear un índice para ese campo.
  3. El nombre de la clave externa es un duplicado de una clave ya existente. Verifique que el nombre de su clave externa sea único dentro de su base de datos. Simplemente agregue algunos caracteres aleatorios al final de su nombre clave para probar esto.
  4. Una o ambas tablas es un MyISAM mesa. Para usar claves foráneas, las tablas deben ser ambas InnoDB . (En realidad, si ambas tablas son MyISAM entonces no obtendrá un mensaje de error, simplemente no creará la clave). En Query Browser, puede especificar el tipo de tabla.
  5. Ha especificado una cascada ON DELETE SET NULL , pero el campo clave relevante está establecido en NOT NULL . Puede solucionar esto cambiando su cascada o configurando el campo para permitir NULL valores.
  6. Asegúrese de que las opciones Charset y Collate sean las mismas tanto a nivel de tabla como a nivel de campo individual para las columnas clave.
  7. Tiene un valor predeterminado (es decir, predeterminado =0) en su columna de clave externa
  8. Uno de los campos de la relación forma parte de una clave combinada (compuesta) y no tiene su propio índice individual. Aunque el campo tiene un índice como parte de la clave compuesta, debe crear un índice separado solo para ese campo clave para usarlo en una restricción.
  9. Tiene un error de sintaxis en su ALTER declaración o ha escrito mal uno de los nombres de campo en la relación
  10. El nombre de su clave externa supera la longitud máxima de 64 caracteres.

Para obtener más detalles, consulte:Número de error de MySQL 1005 No se puede crear la tabla