Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL:Criando tabela com erro FK (errno 150)


O tipo do campo em uma chave estrangeira deve ser igual ao tipo da coluna que está referenciando. Você tem o seguinte (recorte):
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 ,

então você está tentando se referir a INT campos (nas tabelas state e brand ) com TINYINT campos na tabela location . Acho que é esse o erro que está reclamando. Não tenho certeza de como surgiu em primeiro lugar, ou por que zerar FOREIGN_KEY_CHECKS não impede o MySQL de diagnosticar o erro, mas o que acontece se você corrigir essa incompatibilidade de tipo?