我正在尝试执行此查询:
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)
答案 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
将排除字段命名中的拼写错误。解释将揭示价值类型&在调查此类问题时,有助于确保外交关系一致性的关键信息。