CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[SQL]Erreur requete

hakim10
hakim10
Niveau 7
27 mars 2014 à 16:17:42

CREATE TABLE discussion
(
id_discussion INT PRIMARY KEY,
nom VARCHAR(50),
id_user INT FOREIGN KEY REFERENCES utilisateur(id_user)
);

Vous voyez une erreur dans ma requête ?

Thymotep
Thymotep
Niveau 10
27 mars 2014 à 16:40:29

Bonjour ? :(

hakim10
hakim10
Niveau 7
27 mars 2014 à 17:58:53

désolé Bonjour, je l'ai envoyé rapidement parce que j'étais en cours

yoratheon
yoratheon
Niveau 10
27 mars 2014 à 22:01:22

L erreur vient peut être du fait que tu ne te trouver pas dans une bdd.
Sur phpmyadmin par ex, tu peu saisir ton code sans etre dans une base de données donc en début de code tu précise la bdd ou la créé ou sinon tu va dans la bdd et tu envoie ta requête dans la bdd.

NPlay
NPlay
Niveau 12
28 mars 2014 à 11:01:29

La table utilisateur existe ?

+ La requête renvoie pas de message d'erreur ?

vava740
vava740
Niveau 10
28 mars 2014 à 16:17:23

Tu ne précises pas le SGBD utilisé donc je pars du principe que c'est MySQL.

Normalement lorsque tu exécutes ta requête et qu'une erreur survient, le serveur te donne un mesage d'erreur qui est censé t'aider à résoudre le problème (on y va pas à l'aveugle, « vous voyez une erreur quelque part ? »).

En l'occurrence, en exécutant ton code sur un serveur MySQL, tu as l'erreur suivante :

```
ERROR 1064 (42000): 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 'FOREIGN KEY REFERENCES utilisateur(id_user))' at line 5
```

Ta syntaxe est erronnée, et ça pine vers `FOREIGN KEY`. Soit, regardons le manuel de MySQL (adapte ça à ton SGBD si c'est pas MySQL, mais ça devrait être sensiblement pareil) : http://dev.mysql.com/doc/refman/5.1/en/create-table.html

On est dans la partie `column_definition`, et en effet ton code ne match pas la spécification ; il n'y a nulle part le mot clé `FOREIGN KEY` dans la définition d'une colonne.

En revanche tu as `reference_definition` qui peut être ajouté à la fin de la définition d'une colonne, ce qui est peut-être ce que tu voulais faire. En adaptant le code, on a alors :

```
CREATE TABLE discussion (
id_discussion INT PRIMARY KEY,
nom VARCHAR(50),
id_user INT REFERENCES utilisateur (id_user)
);
```

Ça marche, néanmoins même en ayant la table `utilisateur` de créée, aucune contrainte de clé n'est créée (du moins chez-moi).

Tu as donc la deuxième méthode qui consiste (toujours d'après la documentation) à définir la contrainte de clé après les colonnes, ce qui donne :

```
CREATE TABLE discussion (
id_discussion INT PRIMARY KEY,
nom VARCHAR(50),
id_user INT,
FOREIGN KEY (id_user) REFERENCES utilisateur (id_user)
);
```

Ce qui marche à merveille chez-moi (un `SHOW KEYS FROM discussion` révèle bien la clé étrangère contrairement à la version « inline » qui ignorait simplement la contrainte).

Au passage ton nommage manque de consistance (table en français mais colonnes en anglais).

Pseudo supprimé
Pseudo supprimé 28 mars 2014 à 22:34:43

Envoyez un message sur JVC en cours :rire:

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment