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

MySQL:Creando tabla con error FK (errno 150)

El tipo del campo en una clave externa debe ser el mismo que el tipo de la columna a la que hacen referencia. Tienes lo siguiente (recortes):

CREATE  TABLE IF NOT EXISTS `state` (
  `state_id` INT NOT NULL AUTO_INCREMENT ,
...
CREATE  TABLE IF NOT EXISTS `brand` (
  `brand_id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
...
CREATE  TABLE IF NOT EXISTS `location` (
...
  `state_id` TINYINT UNSIGNED NULL DEFAULT NULL ,
...
  `brand_id` TINYINT UNSIGNED NOT NULL ,

entonces estás tratando de referirte a INT campos (en tablas state y brand ) con TINYINT campos en la tabla location . Creo que ese es el error del que se queja. No estoy seguro de cómo surgió en primer lugar, o por qué poner a cero FOREIGN_KEY_CHECKS no impide que MySQL diagnostique el error, pero ¿qué sucede si corrige este tipo de discrepancia?