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

标签 mysql sql

我在第 21 行收到错误 1064 (42000),这是 Vehicle 表中的 VIN_Number。 Entity Inventory 的构建没有问题,VIN_Number 对于所有事件都是 varchar(17) 类型。我相信这些表是以正确的顺序构建的。我找不到任何拼写或标点错误。我不知道我应该检查的事情。我错过了什么?

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

最佳答案

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

通常要避免为对象名称使用关键字(保留或不保留)。

关于mysql建表时报错1064。我可以检查什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36380672/

相关文章:

php - 您如何处理 mySQL 数据库中的复杂数据结构 (OOP)?

SQL 查询 Microsoft Azure 案例表达式无法使用新创建的列名称/变量

java - 获取 Mysql 数据库更改并下载文件

php - 仅获取选中的复选框值

mysql - 如何在 MySQL 列数组中查找 id

php mysql 检查连接是否已经建立

mysql - 我陷入了简单的查询

sql - 如何从ef core中的sql获取sys.databases或sys.tables

php - 使用 PHP MYSQL 搜索查询搜索搜索的每个单词

Javascript:使用 HighCharts 从变量绘制数据 - 无数据传递