Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL :Création d'une table avec une erreur FK (errno 150)

Le type du champ dans une clé étrangère doit être le même que le type de la colonne à laquelle il fait référence. Vous avez ce qui suit (coupure):

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 ,

donc vous essayez de vous référer à INT champs (dans les tables state et brand ) avec TINYINT champs de la table location . Je pense que c'est l'erreur dont il se plaint. Je ne sais pas comment cela s'est produit en premier lieu, ou pourquoi mettre à zéro FOREIGN_KEY_CHECKS n'empêche pas MySQL de diagnostiquer l'erreur, mais que se passe-t-il si vous corrigez cette incompatibilité de type ?