【问题标题】:Getting error on creating foreign key (error cide : 1005) [closed]创建外键时出错(错误代码:1005)[关闭]
【发布时间】:2013-06-09 10:19:38
【问题描述】:

此处的表 SEA​​RCHAUTHOR 正在重试 CATALOGUEBASE 但代码导致以下错误:

Error Code: 1005. Can't create table 'easylibdb1.SEARCHAUTHOR' (errno: 150)

CATALOGUEBASETABLE的表结构

CREATE TABLE IF NOT EXISTS CATALOGUEBASE(

        ID INT UNSIGNED NOT NULL AUTO_INCREMENT,
        TITLE VARCHAR(250),
        SUBTITLE VARCHAR(250),
        AUTHOR VARCHAR(100),
        EDITION VARCHAR(500) DEFAULT '',
        TITLENUMBER VARCHAR(500),
        PRIMARY KEY (ID)
    );

SEARCHAUTHORTABLE

CREATE TABLE IF NOT EXISTS SEARCHAUTHOR(

        ID INT UNSIGNED NOT NULL AUTO_INCREMENT,
        TITLENUMBER VARCHAR(500),
        AUTHOR VARCHAR(250) DEFAULT '',
        SEQUENCE INT UNSIGNED,
        PRIMARY KEY (ID),
        FOREIGN KEY (TITLENUMBER) REFERENCES CATALOGUEBASE (TITLENUMBER)        
    );

提前致谢。

【问题讨论】:

  • 我删除了喊叫声。
  • @L-Three : error cide ?

标签: mysql sql foreign-keys mysql-workbench


【解决方案1】:

外键必须是mysql中的索引。

InnoDB 需要外键和引用键的索引,以便外键检查可以快速且不需要表扫描。阅读更多here

CREATE TABLE IF NOT EXISTS CATALOGUEBASE(

    ID INT UNSIGNED NOT NULL AUTO_INCREMENT,
    TITLE VARCHAR(250),
    SUBTITLE VARCHAR(250),
    AUTHOR VARCHAR(100),
    EDITION VARCHAR(500) DEFAULT '',
    TITLENUMBER varchar(200),
    PRIMARY KEY (ID),
    INDEX(TITLENUMBER)
);

CREATE TABLE IF NOT EXISTS SEARCHAUTHOR(

    ID INT UNSIGNED NOT NULL AUTO_INCREMENT,
    TITLENUMBER varchar(200),
    AUTHOR VARCHAR(250) DEFAULT '',
    SEQUENCE INT UNSIGNED,
    PRIMARY KEY (ID),
    FOREIGN KEY (TITLENUMBER) REFERENCES CATALOGUEBASE(TITLENUMBER)        
);

此查询正在运行。 DEMO

【讨论】:

    猜你喜欢
    • 2012-02-19
    • 2020-08-07
    • 2013-12-30
    • 2021-08-06
    • 2014-12-11
    • 2015-11-30
    • 2010-11-03
    • 2013-09-13
    • 1970-01-01
    相关资源
    最近更新 更多