Felttypen i en fremmednøgle skal være den samme som typen af den kolonne, de refererer til. Du har følgende (snipping):
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 ,
så du prøver at henvise til INT
felter (i tabeller state
og brand
) med TINYINT
felter i tabellen location
. Jeg tror, det er fejlen, den klager over. Ikke sikker på, hvordan det opstod i første omgang, eller hvorfor nulstillede FOREIGN_KEY_CHECKS
forhindrer ikke MySQL i at diagnosticere fejlen, men hvad sker der, hvis du løser denne type uoverensstemmelse?