Ajout table MySQL erreur

Résolu
charline159 Messages postés 216 Statut Membre -  
charline159 Messages postés 216 Statut Membre -
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

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    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
    0
  2. charline159 Messages postés 216 Statut Membre 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.
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      bonjour,
      un message d'erreur?
      0
    2. charline159 Messages postés 216 Statut Membre 1 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Bonjour,
      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")
      0
    3. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > charline159 Messages postés 216 Statut Membre
       
      comment as-tu créé la table role?
      0
    4. charline159 Messages postés 216 Statut Membre 1 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      aïe je me rends compte après coup que je ne l'avais pas créé...
      Merci pour ton aide !
      0
    5. charline159 Messages postés 216 Statut Membre 1 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Cette 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)");
      
      0