我无法在MySQL中创建表(错误1005)

时间:2013-04-08 18:57:36

标签: mysql phpmyadmin mysql-workbench

我正在尝试创建一个表users但是在使用MySQL Workbench和PHPMyAdmin运行查询时,我收到错误“无法创建表”。我似乎收到错误的地方:

存储VARCHAR(5),

CREATE TABLE store
(
    id          INT                 NOT NULL    AUTO_INCREMENT,
    short_name  VARCHAR(5)                      NOT NULL,
    name        VARCHAR(30)                     NOT NULL,
    address1    VARCHAR(50)                     NOT NULL,
    address2    VARCHAR(20),
    city        VARCHAR(30)                     NOT NULL,
    state       VARCHAR(30)                     NOT NULL,
    zip         VARCHAR(10)                     NOT NULL,
    phone       VARCHAR(15)                     NOT NULL,
    CONSTRAINT store_pk PRIMARY KEY (id)
);

CREATE TABLE users
(
    id          INT                     NOT NULL    AUTO_INCREMENT,
    fname       VARCHAR(35)                     NOT NULL,
    lname       VARCHAR(35)                     NOT NULL,
    password    VARCHAR(60),        
    address1    VARCHAR(50)                     NOT NULL,
    address2    VARCHAR(20),
    city        VARCHAR(30)                     NOT NULL,
    state       VARCHAR(30)                     NOT NULL,
    zip         VARCHAR(10)                     NOT NULL,
    phone       VARCHAR(15),
    email       VARCHAR(90),
    store       VARCHAR(5),
    admin       TINYINT             DEFAULT 0   NOT NULL,
    mail_list   TINYINT             DEFAULT 0   NOT NULL,
    active      TINYINT             DEFAULT 0   NOT NULL,
    CONSTRAINT users_pk PRIMARY KEY (id),
    CONSTRAINT users_fk FOREIGN KEY (store)
        REFERENCES store (short_name)
        ON DELETE   SET NULL
        ON UPDATE   CASCADE
);

成功添加商店表。只有当我尝试创建用户表时才会出现错误。

1 个答案:

答案 0 :(得分:2)

外键中引用的列需要编入索引。因此,您需要在store.short_name上添加索引,以允许在users_fk外键中引用它。