2014-04-26 91 views
0

因此,即时通讯新的SQL和即时通讯尝试创建一系列的表不能正常工作。我得到的错误信息是。 这些表格都单独添加没有问题,但是当我想要一次导入它们时,它会给我这个错误。创建表的SQL初学者错误

模式创建失败:您的SQL语法有错误;检查对应于你的MySQL服务器版本使用附近的正确语法手册“[客户]( 客户ID INT PRIMARY KEY, 客户名称VARCHAR(”在第1行:

CREATE TABLE IF NOT EXISTS [Customer](
     CustomerID  int PRIMARY KEY, 
     CustomerName varchar(50) NOT NULL, 
     BillingAddress varchar(400) default NULL, 
     PhoneNumber int default NULL, 
     User_Email  varchar(128) UNIQUE 
)ENGINE=InnoDB DEFAULT CHARSET=latin1; 


CREATE TABLE IF NOT EXISTS [Order](
     OrderID    int NOT NULL PRIMARY KEY, 
     CustomerID   int, 
     OrderDate   date NOT NULL, 
     PurchaseOrderNumber int 
)ENGINE=InnoDB DEFAULT CHARSET=latin1; 





CREATE TABLE IF NOT EXISTS [OrderItem](
     OrderItemID int PRIMARY KEY, 
     ProductID  int NOT NULL, 
     OrderID  int NOT NULL, 
     Quantity  int NOT NULL, 
     PricePerUnit double NOT NULL 
)ENGINE=InnoDB DEFAULT CHARSET=latin1; 




CREATE TABLE IF NOT EXISTS [Product](
     ProductID   int PRIMARY KEY, 
     ProductName   varchar(100) NOT NULL, 
     ProductDescription varchar(100) NOT NULL, 
     SerialNumber   int NOT NULL, 
     UnitesInStock  int NOT NULL, 
     UnitsOnOrder   int NOT NULL, 
     UnitPrice   double NOT NULL 
     SupplierID   int not NULL 
)ENGINE=InnoDB DEFAULT CHARSET=latin1; 




CREATE TABLE IF NOT EXISTS [SupplySchedule](
     ShippingID  int PRIMARY KEY, 
     ShippingMode  varchar(50) NOT NULL 

)ENGINE=InnoDB DEFAULT CHARSET=latin1; 







CREATE TABLE IF NOT EXISTS [Supplier](
     SupplierID  int PRIMARY KEY, 
     SupplierName  varchar(40) NOT NULL, 
     SupplierAddress varchar(128) NOT NULL, 
     ContactName  varchar(128) NOT NULL 


    )ENGINE=InnoDB DEFAULT CHARSET=latin1; 
+0

'订单'是一个保留字。以复数名称命名表是个好主意。 。 。 '订单','供应商','客户'等等。 –

+0

您在'Product'的'CREATE TABLE'中缺少一个逗号,在'UnitPrice'列声明之后# – abl

+0

这是mysql,对不对?那么方括号是什么? – Strawberry

回答

2

order是MySQL中的reserved word 。无论是使用反引号逃逸,或使用其他名称

CREATE TABLE IF NOT EXISTS `Order` (... 
-1

我Order表重命名为OrderMaster为“订单”是MySQL的保留字 尝试下面的脚本:

drop table if exists Customer; 
CREATE TABLE Customer(
     CustomerID  int PRIMARY KEY, 
     CustomerName varchar(50) NOT NULL, 
     BillingAddress varchar(400) default NULL, 
     PhoneNumber int default NULL, 
     User_Email  varchar(128) UNIQUE 
)ENGINE=InnoDB DEFAULT CHARSET=latin1; 

drop table if exists OrderMaster; 
CREATE TABLE IF NOT EXISTS OrderMaster(
     OrderID    int NOT NULL PRIMARY KEY, 
     CustomerID   int, 
     OrderDate   date NOT NULL, 
     PurchaseOrderNumber int 
)ENGINE=InnoDB DEFAULT CHARSET=latin1; 




drop table if exists OrderItem; 
CREATE TABLE OrderItem(
     OrderItemID int PRIMARY KEY, 
     ProductID  int NOT NULL, 
     OrderID  int NOT NULL, 
     Quantity  int NOT NULL, 
     PricePerUnit double NOT NULL 
)ENGINE=InnoDB DEFAULT CHARSET=latin1; 



drop table if exists Product; 
CREATE TABLE IF NOT EXISTS Product(
     ProductID   int PRIMARY KEY, 
     ProductName   varchar(100) NOT NULL, 
     ProductDescription varchar(100) NOT NULL, 
     SerialNumber   int NOT NULL, 
     UnitesInStock  int NOT NULL, 
     UnitsOnOrder   int NOT NULL, 
     UnitPrice   double NOT NULL, 
     SupplierID   int not NULL 
)ENGINE=InnoDB DEFAULT CHARSET=latin1; 



drop table if exists SupplySchedule; 
CREATE TABLE IF NOT EXISTS SupplySchedule(
     ShippingID  int PRIMARY KEY, 
     ShippingMode  varchar(50) NOT NULL 

)ENGINE=InnoDB DEFAULT CHARSET=latin1; 






drop table if exists Supplier; 
CREATE TABLE IF NOT EXISTS Supplier(
     SupplierID  int PRIMARY KEY, 
     SupplierName  varchar(40) NOT NULL, 
     SupplierAddress varchar(128) NOT NULL, 
     ContactName  varchar(128) NOT NULL 


    )ENGINE=InnoDB DEFAULT CHARSET=latin1; 
+0

'order1'?你一定在开玩笑吧! –

+0

他应该使用其他字,然后命令说例子order1 ..没有开玩笑.. –

+0

另一个名字是一个好主意。例如'订单'。但是'order1'对于一张桌子来说是个可怕的名字。 –