Het type van het veld in een refererende sleutel moet hetzelfde zijn als het type van de kolom waarnaar ze verwijzen. Je hebt het volgende (knipsel):
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 ,
dus je probeert te verwijzen naar INT
velden (in tabellen state
en brand
) met TINYINT
velden in tabel location
. Ik denk dat dat de fout is waarover het klaagt. Ik weet niet zeker hoe het in de eerste plaats is gekomen, of waarom het op nul zetten van FOREIGN_KEY_CHECKS
weerhoudt MySQL er niet van de fout te diagnosticeren, maar wat gebeurt er als u dit type mismatch oplost?