创建表时出现mysql错误1064。我能查到什么?
我在第21行得到一个错误1064(42000),这是车辆表中的VIN_编号。创建实体库存时不会出现问题,对于所有事件,VIN_编号均为varchar(17)类型。我相信这些桌子是按照正确的顺序建造的。我找不到任何拼写或标点错误。我对应该检查的东西已经没有主意了。我错过了什么 注意:我也得到了一个发票错误,但我知道它不能被创建,直到车辆被创建创建表时出现mysql错误1064。我能查到什么?,mysql,sql,Mysql,Sql,我在第21行得到一个错误1064(42000),这是车辆表中的VIN_编号。创建实体库存时不会出现问题,对于所有事件,VIN_编号均为varchar(17)类型。我相信这些桌子是按照正确的顺序建造的。我找不到任何拼写或标点错误。我对应该检查的东西已经没有主意了。我错过了什么 注意:我也得到了一个发票错误,但我知道它不能被创建,直到车辆被创建 ALTER TABLE Vehicle DROP FOREIGN KEY fk_Veh_Vehicle_TypeID; ALTER TABLE Invent
ALTER TABLE Vehicle DROP FOREIGN KEY fk_Veh_Vehicle_TypeID;
ALTER TABLE Inventory DROP FOREIGN KEY fk_Inv_Vehicle_TypeID;
ALTER TABLE Invoice DROP FOREIGN KEY fk_Customer_ID;
ALTER TABLE Invoice DROP FOREIGN KEY fk_Sales_Person_ID;
ALTER TABLE Invoice DROP FOREIGN KEY fk_VIN_Number;
DROP TABLE IF EXISTS Vehicle, VehicleType,
Invoice, Customer, SalesPerson, Inventory;
CREATE TABLE VehicleType (
Vehicle_TypeID int NOT NULL,
Veh_Make varchar(15),
Veh_Model varchar(15),
Veh_Year int,
PRIMARY KEY (Vehicle_TypeID)
) Engine=InnoDB;
CREATE TABLE Vehicle (
VIN_Number varchar(17) NOT NULL,
Vehicle_TypeID int NOT NULL,
Condition varchar(10),
Color varchar(8),
PRIMARY KEY (VIN_Number),
CONSTRAINT fk_Veh_Vehicle_TypeID FOREIGN KEY(Vehicle_TypeID)
REFERENCES VehicleType(Vehicle_TypeID)
) Engine=InnoDB;
CREATE TABLE Inventory (
Stock_ID int NOT NULL,
Vehicle_TypeID int NOT NULL,
Quantity int,
PRIMARY KEY (Stock_ID),
CONSTRAINT fk_Inv_Vehicle_TypeID FOREIGN KEY (Vehicle_TypeID)
REFERENCES VehicleType(Vehicle_TypeID)
) Engine=InnoDB;
CREATE TABLE Customer (
Customer_ID varchar(10) NOT NULL,
Cus_LastName varchar(15),
Cus_FirstName varchar(15),
Cus_Street varchar(20),
Cus_City varchar(15),
Cus_Zip varchar(5),
Cus_Phone varchar(10),
PRIMARY KEY (Customer_ID)
) Engine=InnoDB;
CREATE TABLE SalesPerson (
Sales_Person_ID varchar(10) NOT NULL,
Sal_LastName varchar(15),
Sal_FirstName varchar(15),
Sal_Street varchar(15),
Sal_City varchar(15),
Sal_Zip varchar(5),
Sal_Phone varchar(10),
Sal_Years_Worked int,
Sal_Commission_Rate float(4),
PRIMARY KEY (Sales_Person_ID)
) Engine=InnoDB;
CREATE TABLE Invoice (
Invoice_ID varchar(10) NOT NULL,
Customer_ID varchar(10) NOT NULL,
Sales_Person_ID varchar(10) NOT NULL,
VIN_Number varchar(17) NOT NULL,
Price float(10),
PRIMARY KEY (Invoice_ID),
CONSTRAINT fk_Customer_ID FOREIGN KEY (Customer_ID)
REFERENCES Customer(Customer_ID),
CONSTRAINT fk_Sales_Person_ID FOREIGN KEY (Sales_Person_ID)
REFERENCES SalesPerson(Sales_Person_ID),
CONSTRAINT fk_VIN_Number FOREIGN KEY (VIN_Number)
REFERENCES Vehicle(VIN_Number)
) Engine=InnoDB;
在Vehicle表的定义中,有一个名为
condition
的列,它是MySQL()中的保留关键字。可以为列使用另一个名称,也可以像下面这样将其括起来:`condition`
使用关键字(保留或不保留)作为对象名称通常是您希望避免的事情。您得到的确切、完整的错误消息是什么?您的列长度非常小。你为什么把事情限制得这么紧?姓氏的15个字符是完全不够的。它们中的每一个都可能在以后咬你,因为它们太短了。除非有确凿的理由偏离,否则请使用默认值255。更好的是,不要对表名或列名使用保留关键字。@jpw我在学校刚开始学习SQL,不知道有这么多保留字。谢谢。@WP0987是的,根据我的经验,学校通常不会提及与任何特定数据库相关的细节。有些关键字来自标准,有些是特定于产品的,因此有所不同。