Ajout table MySQL erreur [Résolu]

Signaler
Messages postés
184
Date d'inscription
lundi 14 août 2017
Statut
Membre
Dernière intervention
5 mai 2021
-
Messages postés
184
Date d'inscription
lundi 14 août 2017
Statut
Membre
Dernière intervention
5 mai 2021
-
Bonjour, j'essaie actuellement de rajouter une table avec MySQL sauf que j'ai une erreur côté PHP.

Voilà ma requête MySQL:
$bdd -> query("CREATE TABLE IF NOT EXISTS utilisateur(
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    email VARCHAR(50) UNIQUE,
    pseudo VARCHAR(50),
    password VARCHAR(300),
    role INTEGER,
    FOREIGN KEY (role) REFERENCES role(id)
    )");


Et l'erreur PHP:

Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ' email VARCHAR(50) UNIQUE, pseudo VARCHAR(50), password VARCHA...' at line 2 in C:\Users\...\web\formulairePHP\jouer.php:71 Stack trace: #0 C:\Users\...\web\formulairePHP\jouer.php(71): PDO->query('CREATE TABLE IF...') #1 {main} thrown in C:\Users\...\web\formulairePHP\jouer.php on line 71


(la ligne 71 fait référence à la première ligne de ma requête MySQL, donc
$bdd -> query("CREATE TABLE IF NOT EXISTS utilisateur(
)

J'ai bien vérifié la syntaxe, je ne vois pas où est l'erreur. J'ai juste pu constater que la création de la table marchait si je supprimais les lignes suivantes:
 id INTEGER PRIMARY KEY AUTOINCREMENT,
 role INTEGER,
FOREIGN KEY (role) REFERENCES role(id)


Pourriez-vous m'éclairer sur l'erreur s'il vous plaît ?

Cordialement

2 réponses

Messages postés
32478
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 mai 2021
3 490
Bonjour,
Déjà.. aucun rapport avec PHP à proprement parlé.
Là c'est purement un souci de requête SQL ( j'ai donc déplacé ta question dans le bon forum )

Ensuite..je pense que c'est AUTO_INCREMENT et non AUTOINCREMENT
Messages postés
184
Date d'inscription
lundi 14 août 2017
Statut
Membre
Dernière intervention
5 mai 2021
1
Effectivement, c'est AUTO_INCREMENT que je devrais utiliser. Merci pour ton aide.

Par contre, les deux dernières lignes de la requête

role INTEGER,
FOREIGN KEY (role) REFERENCES role(id)

posent toujours problème.
Messages postés
15609
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 mai 2021
855 >
Messages postés
184
Date d'inscription
lundi 14 août 2017
Statut
Membre
Dernière intervention
5 mai 2021

quels sont les prérequis afin de pourvoir créer une clé étrangère?
Messages postés
184
Date d'inscription
lundi 14 août 2017
Statut
Membre
Dernière intervention
5 mai 2021
1 >
Messages postés
15609
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 mai 2021

les colonnes concernées doivent être présentes dans chaque table.

j'ai essayé également avec:
ALTER TABLE utilisateur
    ADD CONSTRAINT fk_role FOREIGN KEY (role) REFERENCES Role(role)

mais ça ne marche pas non plus, pourtant j'ai bien respecté la syntaxe
Messages postés
15609
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 mai 2021
855 >
Messages postés
184
Date d'inscription
lundi 14 août 2017
Statut
Membre
Dernière intervention
5 mai 2021

as-tu lu la documentation, qui décrit les prérequis?
Messages postés
15609
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 mai 2021
855 >
Messages postés
15609
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 mai 2021

Messages postés
184
Date d'inscription
lundi 14 août 2017
Statut
Membre
Dernière intervention
5 mai 2021
1 >
Messages postés
15609
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 mai 2021

je vais aller voir, merci !