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?