Типът на полето във външния ключ трябва да е същият като типа на колоната, която препращат. Имате следното (изрязване):
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 ,
така че се опитвате да се позовавате на INT
полета (в таблици state
и brand
) с TINYINT
полета в таблица location
. Мисля, че това е грешката, от която се оплаква. Не съм сигурен как се появи на първо място или защо се нулира FOREIGN_KEY_CHECKS
не спира MySQL да диагностицира грешката, но какво ще стане, ако коригирате това несъответствие на типа?