Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建表时出现mysql错误1064。我能查到什么?_Mysql_Sql - Fatal编程技术网

创建表时出现mysql错误1064。我能查到什么?

创建表时出现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

我在第21行得到一个错误1064(42000),这是车辆表中的VIN_编号。创建实体库存时不会出现问题,对于所有事件,VIN_编号均为varchar(17)类型。我相信这些桌子是按照正确的顺序建造的。我找不到任何拼写或标点错误。我对应该检查的东西已经没有主意了。我错过了什么

注意:我也得到了一个发票错误,但我知道它不能被创建,直到车辆被创建

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是的,根据我的经验,学校通常不会提及与任何特定数据库相关的细节。有些关键字来自标准,有些是特定于产品的,因此有所不同。