MySQL 5.1.59错了,造成以下表格:
CREATE TABLE IF NOT EXISTS `genre` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`abv` CHAR(3) CHARACTER SET latin1 COLLATE latin1_bin NULL DEFAULT NULL ,
`name` VARCHAR(80) NOT NULL DEFAULT ,
`parent_id` INT NULL DEFAULT NULL ,
PRIMARY KEY (`id`) ,
INDEX `fk_genre_genre1` (`parent_id` ASC) ,
CONSTRAINT `fk_genre_genre1`
FOREIGN KEY (`parent_id` )
REFERENCES `genre` (`id` )
ON DELETE SET NULL
ON UPDATE CASCADE)
ENGINE = InnoDB;
由MySQLWorkbench 5.2.33生成。 错误信息是:
ERROR 1005(HY000) at line __: Can t建立表象板(errno:150)
这有什么错误?
If MySQL reports an error number 1005 from a CREATE TABLE statement, and the error message refers to error 150, table creation failed because a foreign key constraint was not correctly formed.
它还说,允许外国主要提及同一表格:
InnoDB supports foreign key references within a table. In these cases, “child table records” really refers to dependent records within the same table.
The relationship I want is a non-identifying parent-child to represent a hierarchy of genres and sub-genres. A genre doesn t have to have a parent, hence parent_id is nullable.
也许重要的是,MySQLWorkbench确定如下:
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE= TRADITIONAL ;