web-dev-qa-db-ja.com

テーブル作成中のエラー:識別子が必要なこの位置では無効です

テーブルの作成中にこのエラーが発生し続ける:識別子が必要なこの位置では順序が無効です。 Webで調べましたが、これを修正する方法がわかりません。そのエラーの意味とそれを修正する方法は?

Create Table Customer 
(
CustomerID Int Primary Key,
CustomerName varchar(20) Not Null,
CustomerContactNo varchar (10)Not Null,
CustomerAddress varchar(50)Not Null,
CustomerEmail varchar(25)Not Null
)
ENGINE=INNODB;


Create Table Employee
(
EmployeeID TinyInt Primary Key,
EmployeeName varchar(20) Not Null,
EmployeeContactNo varchar(10)Not Null,
EmployeeEmail varchar(25)Not Null
)
ENGINE=INNODB;


Create Table Order
(
OrderNo Int Primary Key,
Foreign Key(CustomerID) REFERENCES Customer(CustomerID),
Foreign Key(EmployeeID) REFERENCES Employee(EmployeeID)
)ENGINE=INNODB;
2
Curious

予約語「注文」をテーブル名として使用しています。

これは、(常に)名前をバックティックで囲む場合、つまり、「順序」の場合、可能ですが、まだ良い考えではありません。ただし、別のテーブル名を考えた方がよいでしょう。

ところで、あなたのOrderテーブルには他にもいくつか問題があります。これらを使用して外部キーを作成する前に、CustomerID列とEmployeeID列を追加する必要があります。

Create Table `Order` ( 
  OrderNo Int Primary Key, 
  CustomerID Int, 
  EmployeeID TinyInt, 
  Foreign Key(CustomerID) REFERENCES Customer(CustomerID), 
  Foreign Key(EmployeeID) REFERENCES Employee(EmployeeID)
) ENGINE=INNODB; 

また、tinyintEmployeeIDに必要なデータ型であることを確認しますか?範囲は非常に限定されており、[-128、127]のみです。

別の良いアイデアは、intsを(すべてのテーブルで)unsignedとして指定することです。つまり、CustomerID Int unsigned、おそらく負のIDを使用しないため。

1
dbdemon