Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL:creazione di una tabella con errore FK (errno 150)

Il tipo del campo in una chiave esterna deve essere uguale al tipo della colonna a cui fanno riferimento. Hai quanto segue (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 ,

quindi stai cercando di fare riferimento a INT campi (nelle tabelle state e brand ) con TINYINT campi nella tabella location . Penso che questo sia l'errore di cui si lamenta. Non sono sicuro di come sia venuto fuori in primo luogo, o perché azzerare FOREIGN_KEY_CHECKS non impedisce a MySQL di diagnosticare l'errore, ma cosa succede se risolvi questo tipo di mancata corrispondenza?