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

时间:2012-12-02 16:56:20

标签: 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,
                      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;

1 个答案:

答案 0 :(得分:2)

正如FOREIGN KEY Constraints所述:

  

外键定义符合以下条件:

     

[ deletia ]

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

CustomerINT UNSIGNED Booking INT {{1}}。{/ 1>