sql >> Database >  >> RDS >> Mysql

MySQL:Tabel maken met FK-fout (errno 150)

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?



  1. SQL-fout:ORA-00933:SQL-opdracht niet correct beëindigd

  2. Hoe waarden in een tabel in te voegen met een externe sleutel met behulp van MySQL?

  3. MySQL-deelnametabellen groeperen op somprobleem

  4. Hoe gebruik je een pakketconstante in SQL SELECT-instructie?