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