Devo creare un db con 2 tabelle in mysql ma lo script fallisce con errno 150 (problema chiave esterna). Ho ricontrollato i campi della chiave esterna per essere uguale su entrambe le tabelle e non riesco a trovare alcun errore.Mysql. Impossibile creare la tabella errno 150
Ecco lo script:
SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @[email protected]@SQL_MODE, SQL_MODE='TRADITIONAL';
DROP SCHEMA IF EXISTS `testdb`;
CREATE SCHEMA IF NOT EXISTS `testdb` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ;
USE `testdb`;
DROP TABLE IF EXISTS `testdb`.`table1` ;
CREATE TABLE IF NOT EXISTS `testdb`.`table1` (
`id` INT UNSIGNED NOT NULL ,
`field1` VARCHAR(50) NULL ,
PRIMARY KEY (`id`))
ENGINE = InnoDB;
DROP TABLE IF EXISTS `testdb`.`table2` ;
CREATE TABLE IF NOT EXISTS `testdb`.`table2` (
`id` INT NOT NULL AUTO_INCREMENT ,
`field1` VARCHAR(50) NULL ,
`date` DATE NULL ,
`cnt` INT NULL ,
PRIMARY KEY (`id`) ,
INDEX `FK_table2_table1` (`field1` ASC) ,
CONSTRAINT `FK_table2_table1`
FOREIGN KEY (`field1`)
REFERENCES `testdb`.`table1` (`field1`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
SET [email protected]_SQL_MODE;
SET [email protected]_FOREIGN_KEY_CHECKS;
SET [email protected]_UNIQUE_CHECKS;
ho provato in Windows e Ubuntu con diverse versioni di MySQL e non ha funzionato.
Qualche idea? Molte grazie.
Ho anche ricevuto questo errore tentando di creare una tabella con un vincolo FK su un'altra tabella che non esisteva ancora. È un problema facile da risolvere, reso molto difficile da un messaggio di errore completamente inutile. – Cerin
Per chi arriva da google, questo errore può verificarsi anche se si commette un errore di battitura sul nome della tabella della chiave esterna. –