0

我试图创建以下表格:

顾客:

CREATE TABLE Customer(customer_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
                      surname VARCHAR(15) NOT NULL,
                      forename VARCHAR(15) NOT NULL,
                      DOB TIMESTAMP NOT NULL,
                      phone_no VARCHAR(20) NOT NULL,
                      email_address VARCHAR(30),
                      postcode VARCHAR(15) NOT NULL, 
                      PRIMARY KEY(customer_id)) ENGINE=INNODB;

当我之后尝试创建“预订”表时,出现错误

“错误 1005(HY000):无法创建表 'Test.Booking'(错误号:150)”

我在线检查了错误,发现它与我试图在表之间建立的外键连接有关;我将在下面给出。

预订:

CREATE TABLE Booking (booking_id INT UNSIGNED NOT NULL AUTO_INCREMENT, 
                      customer_id INT NOT NULL,
                      staying_from TIMESTAMP,
                      staying_until TIMESTAMP,
                      cost INT,
                      PRIMARY KEY(booking_id),
                      FOREIGN KEY(customer_id) REFERENCES Customer(customer_id)
                      ON UPDATE CASCADE ON DELETE RESTRICT) ENGINE=INNODB;
4

1 回答 1

2

FOREIGN KEY约束中所述:

外键定义受以下条件约束:

[ deletia ]

  • 外键和被引用键中的对应列内部必须有相似的内部数据类型,InnoDB这样它们就可以在不进行类型转换的情况下进行比较。整数类型的大小和符号必须相同。字符串类型的长度不必相同。对于非二进制(字符)字符串列,字符集和排序规则必须相同。

Customer你有INT UNSIGNED而在Booking你有INT

于 2012-12-02T16:59:33.890 回答