我必須在mysql中創建一個帶有2個表的數據庫,但腳本失敗,並顯示errno 150(外鍵問題)。我仔細檢查了兩個表上的外鍵字段是相同的,我找不到任何錯誤。Mysql。無法創建表errno 150
下面是腳本:
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;
我已經與不同版本的MySQL試圖在Windows和Ubuntu和沒有工作。
任何想法?非常感謝。
我還試圖通過創建一個FK約束表到另一個不存在的表來接收這個錯誤。這是一個容易解決的問題,由於完全無用的錯誤信息而變得非常困難。 – Cerin 2012-03-12 16:08:48
對於那些從谷歌來的人來說,如果你在外鍵的表名上輸入錯誤,也會發生這個錯誤。 – 2013-11-26 17:39:11