MySQL: Creando tabla con error FK (errno 150)

He creado un modelo conMySQL Workbench y ahora estoy intentando instalarlo en un servidor mysql.

UtilizandoArchivo> Exportar> Forward Engineer SQL CREATE Script ... genera un archivo grande y bonito para mí, con todos los ajustes que solicito. Cambio aMySQL GUI Tools (el buscador de consultas específicamente) y cargue este script (tenga en cuenta que voy de una herramienta MySQL oficial a otra). Sin embargo, cuando intento ejecutar este archivo, aparece el mismo error una y otra vez

SQLSTATE [HY000]: Error general: 1005 No se puede crear la tabla './srs_dev/location.frm' (errno: 150)

"OK", me digo a mí mismo, algo está mal con la tabla de ubicación. Así que reviso la definición en el archivo de salida.

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';

-- -----------------------------------------------------
-- Table `state`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `state` ;

CREATE  TABLE IF NOT EXISTS `state` (
  `state_id` INT NOT NULL AUTO_INCREMENT ,
  `iso_3166_2_code` VARCHAR(2) NOT NULL ,
  `name` VARCHAR(60) NOT NULL ,
  PRIMARY KEY (`state_id`) )
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `brand`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `brand` ;

CREATE  TABLE IF NOT EXISTS `brand` (
  `brand_id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
  `name` VARCHAR(45) NOT NULL ,
  `domain` VARCHAR(45) NOT NULL ,
  `manager_name` VARCHAR(100) NULL ,
  `manager_email` VARCHAR(255) NULL ,
  PRIMARY KEY (`brand_id`) )
ENGINE = InnoDB;

-- -----------------------------------------------------
-- Table `location`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `location` ;

CREATE  TABLE IF NOT EXISTS `location` (
  `location_id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
  `name` VARCHAR(255) NOT NULL ,
  `address_line_1` VARCHAR(255) NULL ,
  `address_line_2` VARCHAR(255) NULL ,
  `city` VARCHAR(100) NULL ,
  `state_id` TINYINT UNSIGNED NULL DEFAULT NULL ,
  `postal_code` VARCHAR(10) NULL ,
  `phone_number` VARCHAR(20) NULL ,
  `fax_number` VARCHAR(20) NULL ,
  `lat` DECIMAL(9,6) NOT NULL ,
  `lng` DECIMAL(9,6) NOT NULL ,
  `contact_url` VARCHAR(255) NULL ,
  `brand_id` TINYINT UNSIGNED NOT NULL ,
  `summer_hours` VARCHAR(255) NULL ,
  `winter_hours` VARCHAR(255) NULL ,
  `after_hours_emergency` VARCHAR(255) NULL ,
  `image_file_name` VARCHAR(100) NULL ,
  `manager_name` VARCHAR(100) NULL ,
  `manager_email` VARCHAR(255) NULL ,
  `created_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
  PRIMARY KEY (`location_id`) ,
  CONSTRAINT `fk_location_state`
    FOREIGN KEY (`state_id` )
    REFERENCES `state` (`state_id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_location_brand`
    FOREIGN KEY (`brand_id` )
    REFERENCES `brand` (`brand_id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

CREATE INDEX `fk_location_state` ON `location` (`state_id` ASC) ;

CREATE INDEX `fk_location_brand` ON `location` (`brand_id` ASC) ;

CREATE INDEX `idx_lat` ON `location` (`lat` ASC) ;

CREATE INDEX `idx_lng` ON `location` (`lng` ASC) ;

Me parece bien Supongo que tal vez haya algún problema con el navegador de consultas, así que coloco este archivo en el servidor e intento cargarlo de esta manera.

] mysql -u admin -p -D dbname < path/to/create_file.sql

Y me sale el mismo error. Así que empiezo a buscar en Google este problema y encuentro todo tipo de cuentas que hablan de un error con tablas de estilo InnoDB que fallan con claves externas, y la solución es agregar "SET FOREIGN_KEY_CHECKS = 0;" a la secuencia de comandos SQL. Bueno, como puedes ver, eso ya es parte del archivo que MySQL Workbench escupió.

Entonces, mi pregunta es, ¿por qué no funciona esto cuando estoy haciendo lo que creo que debo hacer?

Información de la versión:

MySQL: 5.0.45Herramientas GUI: 1.2.17Banco de trabajo: 5.0.30

Respuestas a la pregunta(4)

Su respuesta a la pregunta