2016-04-03 60 views
1

我收到了第21行的ERROR 1064(42000),它是Vehicle表中的VIN_Number。实体库存的构建没有问题,VIN_Number的类型为varchar(17),适用于所有的事件。我相信桌子是按照正确的顺序建造的。我找不到任何拼写或标点符号错误。我不知道应该检查的事情。我错过了什么?创建表时mysql错误1064。我可以检查什么?

注意:我也收到了发票的错误,但是我知道它不能在Vehicle创建之前创建。

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; 
+2

你得到了什么**确切的,完整的**错误信息? –

+1

您的色谱柱长度*非常*小气。你为什么把事情限制得这么荒唐?姓氏的十五个字符完全不足。其中的每一个都可能会在稍后回来咬你,因为它们太短。除非你有一个非常可靠的理由偏离,否则使用默认值255. – tadman

回答

1

在车辆表的定义有一个名为condition列是MySQL中的保留关键字(reference)。要么使用列的另一个名称,要么将其用反引号括起来,如下所示:`condition`

使用关键字(保留与否)用于对象名称通常是您要避免的内容。

+1

更好的是,不要使用表或列名称的保留关键字。 – tadman

+1

@tadman当然 – jpw

+0

@jpw我刚开始在学校学习SQL,不知道有那么多保留字。谢谢。 – WP0987