sql >> Databáze >  >> RDS >> Mysql

MySQL:Vytvoření tabulky s chybou FK (errno 150)

Typ pole v cizím klíči musí být stejný jako typ sloupce, na který odkazuje. Máte následující (výstřižky):

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 ,

takže se pokoušíte odkazovat na INT pole (v tabulkách state a brand ) pomocí TINYINT pole v tabulce location . Myslím, že to je ta chyba, na kterou si stěžuje. Nejste si jisti, jak k tomu došlo, nebo proč vynulování FOREIGN_KEY_CHECKS nezabrání MySQL v diagnostice chyby, ale co se stane, když tento nesoulad typu opravíte?



  1. levenshtein alternativa

  2. Porovnání SQL, tvůrců dotazů a ORM

  3. Upravený dotaz pomocí ManyToMany

  4. jak vybrat sudé záznamy z tabulky v oracle?