/ / erreur de création de table sur ma base de données - mysql, sql

erreur de création de table sur ma base de données - mysql, sql

J'essaie de créer une table qui référence une autre table dans ma base de données, mais je reçois cette erreur.

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near "UInt32 PRIMARY KEY, name VARCHAR(20), handle VARCHAR(20), countryName VARCHAR(20" at line 1

J'ai jeté un coup d'oeil à l'erreur # 1064 sur le MySQL page de référence mais son erreur d’une erreur de vue ne donne que le contour de sa structure.

 Error: 1064 SQLSTATE: 42000 (ER_PARSE_ERROR)

Message: %s near "%s" at line %d

c'est le code que j'ai essayé d'exécuter

CREATE TABLE User (userID UInt32 PRIMARY KEY, name VARCHAR(20), handle VARCHAR(20), countryName VARCHAR(20) references Countries(SID))engine=innodb;

La table Countries a déjà été créée, je ne suis donc pas tout à fait sûre de la cause du problème

toute aide serait grandement appréciée.

ajouté pas c'est comment j'ai défini les pays

CREATE TABLE Countries (countryName VARCHAR(20) PRIMARY KEY)engine=innodb;

Réponses:

1 pour la réponse № 1

Réponse MISE À JOUR:

Déplacer la définition de contrainte hors de la définition de table a permis d’isoler le problème:

CREATE TABLE User(
userID UInt32 PRIMARY KEY
,name VARCHAR(20)
,handle VARCHAR(20)
,countryName VARCHAR(20)
)engine=innodb;


ALTER TABLE user ADD CONSTRAINT user_country_name_fk FOREIGN KEY(countryName) REFERENCES Countries(SID);

L’échec de la création de la table a été provoqué par l’utilisation de UInt32 Type de données. Changé en int, création de la table réussie.

La contrainte de clé étrangère faisait référence à la mauvaise colonne dans Countries. Il faisait référence à SID mais devait se référer à countryName.