创建表时mysql错误1064。我可以检查什么?

时间:2016-04-03 01:31:55

标签: mysql sql

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

注意:我也收到了Invoice的错误,但我知道在创建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;

1 个答案:

答案 0 :(得分:1)

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

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