我试图创建以下表格:
客户:
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;
当我尝试创建“预订”表后,我收到错误
“ERROR 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;
答案 0 :(得分:2)
外键定义符合以下条件:
[ deletia ]
- 外键和引用键中的相应列必须在
InnoDB
内具有类似的内部数据类型,以便可以在不进行类型转换的情况下对它们进行比较。 整数类型的大小和符号必须相同。字符串类型的长度不必相同。对于非二进制(字符)字符串列,字符集和排序规则必须相同。
在Customer
中INT UNSIGNED
Booking
INT
{{1}}。{/ 1>