错误代码:1005无法创建表(MySQL)

时间:2016-10-03 18:50:45

标签: mysql sql

出于某种原因,我无法在MySQL上运行此SQL脚本。我相信我也设置了所有外键。如果变量类型是INT,它运行正常,但是,如果它是VARCHAR,它会给我一个错误代码#1005。有人知道发生了什么吗?

DROP TABLE IF EXISTS `test_table_2`;
DROP TABLE IF EXISTS `test_table_1`;

CREATE TABLE `test_table_1` (
    ID int NOT NULL AUTO_INCREMENT,
    `color` VARCHAR(15) NOT NULL,
    PRIMARY KEY(ID)
) ENGINE = InnoDB DEFAULT CHARSET = utf8;

CREATE TABLE `test_table_2` (
    ID int NOT NULL AUTO_INCREMENT,
    `test_id` int(10) NOT NULL,
    `color` VARCHAR(15) NOT NULL,
    PRIMARY KEY(ID),
    CONSTRAINT `fk_color` FOREIGN KEY (`color`) REFERENCES `test_table_1` (`ID`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8;

问题在于:

CONSTRAINT `fk_color` FOREIGN KEY (`color`) REFERENCES `test_table_1` (`ID`)

1 个答案:

答案 0 :(得分:3)

您正尝试在ID中将INT test_table_1Color列从test_table_2列引用至INT列,因此它应为{{1}类型}

CREATE TABLE `test_table_2` (
    ID int NOT NULL AUTO_INCREMENT,
    `test_id` int(10) NOT NULL,
    `color` INT NOT NULL, --here
    PRIMARY KEY(ID),
    CONSTRAINT `fk_color` FOREIGN KEY (`color`) REFERENCES `test_table_1` (`ID`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8;

基本上,引用列必须与父表列

具有相同的数据类型