2013-04-08 4 views
0

테이블을 만들려고하는데, MySQL Workbench 및 PHPMyAdmin을 사용하여 쿼리를 실행할 때 "테이블을 만들 수 없습니다"라는 오류 메시지가 나타납니다. 나는 그것이 말하는 위치에 오류를 받고있는 것으로 나타납니다MySQL에서 테이블을 만들 수 없습니다. (오류 1005)

저장소가 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 
); 

가게 테이블이 성공적으로 추가됩니다. 오류가 발생하는 users 테이블을 만들려고 할 때만입니다.

+0

정확한 오류 메시지의 정의 – Barmar

답변

2

외래 키에서 참조되는 열을 인덱싱해야합니다. 따라서 외부 키 users_fk에서 참조되도록하려면 store.short_name에 색인을 추가해야합니다.

관련 문제