在MySql中创建表的问题

时间:2017-08-22 15:21:47

标签: mysql

我正在尝试执行此查询:

create table order_details(
    Order_id int PRIMARY KEY AUTO_INCREMENT,
    Book_Id int, 
    Cust_Name varchar(50),
    Phone_No int,
    Address varchar(100),
    Order_Date DATE,
    Quantity int,
    FOREIGN KEY(Book_Id) REFERENCES book(Book_Id));

但结果是MySQL错误1005:

ERROR 1005 (HY000): Can't create table 'bookstore.order_details' (errno: 150)

2 个答案:

答案 0 :(得分:0)

您的数据库中可能没有“book”表,或者如果您有一个“book”表,那么可能没有名为“Book_id”的列

答案 1 :(得分:0)

create table order_details(
   Order_id int PRIMARY KEY AUTO_INCREMENT,
   Book_Id int, 
   Cust_Name varchar(50),
   Phone_No int,
   Address varchar(100),
   Order_Date DATE,
   Quantity int,
FOREIGN KEY(Book_Id) REFERENCES book(Book_Id));

抛出错误( 150 ),因为mysql无法引用指定的外键。这可能是由于多种原因造成的,但我建议您采取以下步骤对此进行故障排除。

导致此错误变得回避的常见问题是在执行查询之前未执行USE my_database_name;。它失败是因为上下文错误或缺席。

1。)通过在参考文献中添加数据库名称来修改您的查询

  • 示例FOREIGN KEY(`Book_Id`) REFERENCES `my_database_name`.`book`(`Book_Id`));

2。)请查看book表格,确保`Book_Id`的类型正确(int),其名称与您引用的完全相同。执行以下查询,您可以找到答案:

  • SELECT `b`.`Book_Id` FROM `book` AS `b`;
  • EXPLAIN `book`;

从引用的表中选择Book_Id将排除字段命名中的拼写错误。解释将揭示价值类型&在调查此类问题时,有助于确保外交关系一致性的关键信息。