IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Erreur 1064 sur une requête MySql


Sujet :

Requêtes MySQL

  1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 372
    Par défaut Erreur 1064 sur une requête MySql
    Bonjour,

    Je suis totalement débutant en MySql et j'ai une erreur 1064 que je n'arrive pas à régler.

    Ma requête formatée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO participant (nom,prenom,dateNaissance,idStatut,dateEmbauche,civil,isReferenced,isRsp,idAccess,idUser) VALUES ('CASTRIC' ,'David' ,19741223 ,1 , ,'Monsieur' ,1 ,0 ,59028 ,131)
    Le message d'erreur :
    Numéro d'erreur = <1064>.
    Message d'erreur :
    Erreur de syntaxe près de ''Monsieur' ,1 ,0 ,59028 ,131)' à la ligne 1
    Merci de votre aide

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 132
    Par défaut
    Il faut passer une valeur à toutes les colonnes.

    Ici, c'est apparemment la colonne dateEmbauche qui ne reçoit pas de valeur.
    Dans ce cas, on ne laisse pas un espace entre deux colonnes mais on passe le marqueur null comme valeur. Ou on omet la colonne non renseignée de la liste des colonnes.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 372
    Par défaut
    Merci Al1_24,

    C'est exactement ça.
    Cela suppose donc de contrôler toutes les valeurs avant ou il y a une solution plus simple pour éviter ça ?

    Merci de ton aide

  4. #4
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 372
    Par défaut
    Bon, j'ai une autre erreur maintenant...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT TOP 1 * FROM participant WHERE participant.num = max(participant.num)

  5. #5
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 372
    Par défaut
    Trouvé,

    J'ai remplacé par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT MAX(num) FROM participant"

  6. #6
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 372
    Par défaut
    Nouvelle erreur dans ma syntaxe.

    J'ai besoin de tous les champs de la table "participant" en sélectionnant uniquement le "num" le plus élevé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT *, MAX(num) FROM participant"

  7. #7
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 778
    Par défaut
    Salut lololebricoleur.

    Au lieu de déposer un message à chaque erreur, vous devriez vous former à l'apprentissage des bases de données et en particulier le langage SQL.

    Pour sélectionner toutes les lignes dont la colonne num possède la valeur la plus grande, voici comment faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select  *
    from  `participant`
    where num = (  select max(num) from `participant` );
    @+

  8. #8
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 372
    Par défaut
    Merci de votre aide,

    Artemus, je prend note de votre conseil mais je manque de temps parfois, dsl.
    Et par ailleurs et sauf erreur, j'ai bien l'impression que les requête SQL ne sont pas interprétée de la même façon selon le moteur utilisé. Je me trompe ?

    Et parfois également, il y a des cas qui semblent simple mais qui provoque des erreurs et pour lesquels je ne trouve aucun explication, y compris dans les tutos ou ouvrage dédié.

    Par exemple, cette requête provoque une erreur 1064 avec pour seule info "Erreur de syntaxe près de 'EPARGNE N° 0054566',libTTC = 'PARTICIPATION (NET)',raison = 'MENUISERIE DUVAL (' à la ligne 1"...

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE facture SET ref = 'fac.2016.10.1079',stage = 'FEEBAT (RENOVE)' , numSession = 5694 , stagiaire = 0,lieu = 'SCI SERALBAT (HEROUVILLE-SAINT-CLAIR)',dates = '04/10/2016 AU 06/10/2016',dureeH = 21,dureeJ= 0,type = 'FACTURE ACQUITTEE',ttc = 600 ,date = 20161010, echeance = 20161010,obs = 'FACTURE REGLEE LE 03/10/2016 PAR CHEQUE CAISSE D'EPARGNE N° 0054566',libTTC = 'PARTICIPATION (NET)',raison = 'MENUISERIE DUVAL (ENT)',adresse = 'Rue des Tanneries',adresse2 = '', cp = 14170, ville = 'SAINT PIERRE SUR DIVES', idUser = 3 WHERE num=16101079

    Ben là, dans un cas comme ça, j'ai beau chercher, je ne trouve pas.

  9. #9
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 372
    Par défaut
    Merci Al1_24 !!!

    Grâce à votre recommandations sur l’utilisation des balises, recommandations que je viens d'appliquer en utilisant notamment "CODE=sql", je découvre que la mise en couleur des différentes parties de ma requête révèle une erreur !
    Très pratique pour détecter certaines erreurs de syntaxe.

    Merci encore.

    PS : Artemus, vous avez raison, je dois me former

  10. #10
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 544
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 544
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Comme votre requête n'est pas mise en forme, tout est sur une seule ligne et du coup le diagnostic ne vous aide pas beaucoup 'erreur sur la ligne 1"...
    Pour faciliter la maintenance et être mieux guidé, un peu de mise en forme est utile.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    UPDATE facture
       SET ref = 'fac.2016.10.1079'
         , stage = 'FEEBAT (RENOVE)' 
         , numSession = 5694 
         , stagiaire = 0
         , lieu = 'SCI SERALBAT (HEROUVILLE-SAINT-CLAIR)'
         , dates = '04/10/2016 AU 06/10/2016'
         , dureeH = 21
         , dureeJ= 0
         , type = 'FACTURE ACQUITTEE' 
         , ttc = 600 
         , date = 20161010      
         , echeance = 20161010
         , obs = 'FACTURE REGLEE LE 03/10/2016 PAR CHEQUE CAISSE D'EPARGNE N° 0054566'
         , libTTC = 'PARTICIPATION (NET)'
         , raison = 'MENUISERIE DUVAL (ENT)'
         , adresse = 'Rue des Tanneries'
         , adresse2 = ''
         , cp = 14170
         , ville = 'SAINT PIERRE SUR DIVES'
         , idUser = 3 
    WHERE num=16101079
    Ce code beaucoup plus facile à lire met en évidence que la colonne "date" utilise un nom réservé SQL, auquel cas il faut l'encadrer de quotes inversées ou de doubles quotes
    Il est prudent d'ajouter un espace après chaque virgule
    On voit aussi que la colonne obs contient une quote d'où la fin de chaîne de caractères et probablement l'erreur signalée
    On voit également que les colonnes "date" et "echeance" sont alimentées par des valeurs numériques, est-ce normal ?
    On voit enfin que la base de données est très mal modélisée, mais ce n'est pas le sujet du jour

  11. #11
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 778
    Par défaut
    Salut lololebricoleur.

    Citation Envoyé par lololebricoleur
    il y a des cas qui semblent simple mais qui provoque des erreurs et pour lesquels je ne trouve aucun explication
    L'erreur que vous rencontrez concerne l'apostrophe dans une chaîne de caractères.
    Il n'y a que deux solutions à ce genre de problème.
    Par exemple vous avez la chaîne "l'été à la page".
    Soit vous la remplissez ainsi : "l''été à la page" en doublant l'apostrophe,
    Soit vous la remplissez ainsi : "l\'été à la page" en utilisant le caractère escape.

    @+

  12. #12
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 372
    Par défaut
    Merci Artemus,

    En effet, c'était un problème d'apostrophe.
    J'ai une procédure qui traite cela mais elle n'était pas appelée ici.
    Problème résolu.
    La mise en forme sur le forum m'a fait apparaitre l'erreur comme un nez au milieu du visage, merci bal1_24 ;-)

    escartefigue,
    Je comprend l'intérêt de la mise en forme dans votre exemple mais les erreurs apparaissent à l'éxécution et je récupère l'information par mail.
    Donc et sauf erreur de ma part, à l'éxécution de la requête SQL, la mise en forme n'est plus et la requête forme une chaine de caractères continu non ?

    Merci de votre aide

Discussions similaires

  1. [MySQL] erreur sur une requête mysql
    Par Philcmoi dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 23/10/2008, 13h48
  2. [MySQL] texte qui bloque sur une requéte mysql
    Par leto02 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 28/11/2007, 11h32
  3. erreur 00905 sur une requête provenant d'access
    Par amamildor dans le forum SQL
    Réponses: 4
    Dernier message: 09/10/2007, 14h05
  4. problème sur une requête mysql
    Par atomikado dans le forum Requêtes
    Réponses: 4
    Dernier message: 05/10/2007, 16h04
  5. besoin d'aide sur une requête mysql
    Par unmulot dans le forum Langage SQL
    Réponses: 5
    Dernier message: 07/07/2006, 13h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo