Ajout table MySQL erreur

Résolu
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

  • Votes
  • Date
  • Date décroissante
  1. Modérateur
    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
    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.
      1. Contributeur
        bonjour,
        un message d'erreur?
      2. @yg_beBonjour,
        Voilà l'erreur que j'ai à présent:
        General error: 1005 Can't create table `test`.`utilisateur` (errno: 150 "Foreign key constraint is incorrectly formed")
      3. @yg_beaïe je me rends compte après coup que je ne l'avais pas créé...
        Merci pour ton aide !
      4. @yg_beCette fois j'ai bien créé la table role mais j'ai quand même une erreur:
        errno: 150 "Foreign key constraint is incorrectly formed"
        , donc voici tout mon code:
        $pdo -> query("CREATE TABLE IF NOT EXISTS utilisateur(
            id INTEGER PRIMARY KEY AUTO_INCREMENT,
            email VARCHAR(50) UNIQUE,
            pseudo VARCHAR(50),
            password VARCHAR(300),
            role INTEGER
            );");
        
        $pdo -> query("CREATE TABLE IF NOT EXISTS Role(
            role INTEGER,
            description VARCHAR(50)
        )");
        
        $pdo -> query("ALTER TABLE utilisateur ADD FOREIGN KEY (role) REFERENCES Role (role)");