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 ?