无法在数据库中创建表

时间:2019-05-17 07:55:15

标签: mysql mysql-workbench

我有用于创建房间预订数据库的代码,但是每当我为表中的外键引用一个零件时,就会出现错误,并且仍然无法解决问题

DROP TABLE IF EXISTS ROOM;

DROP TABLE IF EXISTS CUSTOMER;
DROP TABLE IF EXISTS ROOMBOOKING;
DROP TABLE IF EXISTS CUSTOMERFEEDBACK;
DROP TABLE IF EXISTS PAYMENT;
CREATE TABLE ROOM(

    RoomNo INT(5) NOT NULL,
    PricePerNight DOUBLE,
    Type VARCHAR(255),

    PRIMARY KEY (RoomNo)
);

CREATE TABLE CUSTOMER(

    CustomerID INT(10) NOT NULL,
    CustName VARCHAR (255),
    CustPhoneNo INT (15),
    Custemail VARCHAR (255),
    CustDOB DATE,

    PRIMARY KEY (CustomerID)
);



CREATE TABLE ROOMBOOKING(

    CustomerID int(10) NOT NULL,
    RoomNo int(5) NOT NULL,
    CheckInDate date NOT NULL,
    CheckOutDate date,
    CustSpecialRequest VARCHAR (500),
    PRIMARY KEY (CustomerID,CheckInDate,RoomNo),
    FOREIGN KEY (CustomerID) REFERENCES CUSTOMER(CustomerID),
    FOREIGN KEY (RoomNo) REFERENCES ROOM(RoomNo)
);

CREATE TABLE CUSTOMERFEEDBACK(

    CommentDate date NOT NULL,
    CustomerID int(10) NOT NULL,
    RoomNo int(5) NOT NULL,
    DateCheckedIn date NOT NULL,
    Comment VARCHAR (255),
    PRIMARY KEY (RoomNo,CustomerID,CommentDate,DateCheckedIn), 
    FOREIGN KEY (DateCheckedIn,RoomNo,CustomerID) REFERENCES ROOMBOOKING(CheckInDate,RoomNo,CustomerID)
);



这是错误:

“错误代码:1005。无法创建表'new_schema.CUSTOMERFEEDBACK'(错误号:150)”

1 个答案:

答案 0 :(得分:1)

尝试重新排列您的参考文献

从此:

FOREIGN KEY (DateCheckedIn,RoomNo,CustomerID) REFERENCES ROOMBOOKING(CheckInDate,RoomNo,CustomerID)

对此:

FOREIGN KEY (CustomerID,DateCheckedIn,RoomNo) REFERENCES ROOMBOOKING(CustomerID,CheckInDate,RoomNo)

因为这是您在ROOMBOOKING中设置主键的方式