web-dev-qa-db-fra.com

Erreur lors de la création de la table: n'est pas valide à cette position en attendant un identifiant

Je continue à recevoir cette erreur lors de la création de la table: la commande n'est pas valide à cette position en attendant un identifiant. Je recherche sur le Web, mais je n'arrive pas à comprendre comment résoudre ce problème. Que signifie cette erreur et comment la corriger?

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

Vous utilisez un mot réservé "Ordre" comme nom de table.

C'est possible, bien que ce ne soit toujours pas une bonne idée, si vous adoptez (toujours) le nom en tiques arrière, c'est-à-dire: `` Commander ''. Il serait probablement préférable de proposer un nom de table différent.

Soit dit en passant, votre table Order a également quelques autres problèmes. Vous devez ajouter les colonnes CustomerID et EmployeeID avant de pouvoir créer des clés étrangères avec elles:

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; 

De plus, êtes-vous sûr que tinyint est le type de données que vous souhaitez pour EmployeeID? Il a une portée très limitée, seulement [-128, 127].

Une autre bonne idée est de spécifier vos ints (dans tous les tableaux) comme unsigned, c'est-à-dire: CustomerID Int unsigned, car vous n'utiliserez probablement pas d'identifiants négatifs.

1
dbdemon