mysql中的外键问题(错误1005)

mysql中的外键问题(错误1005),mysql,Mysql,我已尝试创建以下表: 客户: 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,

我已尝试创建以下表:

客户:

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;
如以下文件所述:

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

[deletia]

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