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 : Out of range value adjusted for column 'accueil_id'


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 171
    Points : 70
    Points
    70
    Par défaut Erreur : Out of range value adjusted for column 'accueil_id'
    Bonjour a tous,

    J'essaie de mettre a jour mon site internet via des formulaires PHP que j'ai mis en place. Avant, pas de probleme, mes requetes fonctionnaient.
    Aujourd'hui, jessaie de faire une mise a jour et j'ai ce message :
    MySQL a répondu:

    #1264 - Out of range value adjusted for column 'accueil_id' at row 1
    lorsque je fais la requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO `accueil` ( `accueil_id` , `accueil_date` , `accueil_nom` , `accueil_texte` , `accueil_abandon` ) 
    VALUES (
     
    '', '2005-11-20', 'Nouveautés', 'Photos du match', 'N'
    )
    Voici la structure de ma table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TABLE `accueil` (
      `accueil_id` int(11) NOT NULL auto_increment,
      `accueil_date` date NOT NULL,
      `accueil_nom` varchar(255) NOT NULL,
      `accueil_texte` varchar(255) NOT NULL,
      `accueil_abandon` char(1) NOT NULL default 'N',
      PRIMARY KEY  (`accueil_id`)
    )
    Pour info :
    version de mySQL : MySQL 5.0.15-nt

    Merci a ceux qui m'aideront

    Linou

  2. #2
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 901
    Points : 6 026
    Points
    6 026
    Par défaut
    Pourquoi mets tu une chaine vide dans la colonne accueil_id déclarée numérique ?
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  3. #3
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Ton champ est auto_incrémenté, tu n'es pas censé fournir une valeur, je suppose.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO `accueil` (  `accueil_date` , `accueil_nom` , `accueil_texte` , `accueil_abandon` ) 
    VALUES (  '2005-11-20', 'Nouveautés', 'Photos du match', 'N' )
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 171
    Points : 70
    Points
    70
    Par défaut
    Citation Envoyé par qi130
    Pourquoi mets tu une chaine vide dans la colonne accueil_id déclarée numérique ?
    Comme le dit Médiat, c'est parce que c'est un auto incrément.


    Ton champ est auto_incrémenté, tu n'es pas censé fournir une valeur, je suppose.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO `accueil` (  `accueil_date` , `accueil_nom` , `accueil_texte` , `accueil_abandon` ) 
    VALUES (  '2005-11-20', 'Nouveautés', 'Photos du match', 'N' )
    Effectivement ca mache comme ca. Mais alors, pourquoi ca marchait avant, j'avais toujours fait comme ca quand j'avais un auto incrment.
    Est ce que ca peut venir de la version de MySQL?

    Merci

  5. #5
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Citation Envoyé par linou
    Effectivement ca mache comme ca. Mais alors, pourquoi ca marchait avant?
    Un changement de politique (volontaire ou non) face à la tolérance aux fautes sans doute...
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 171
    Points : 70
    Points
    70
    Par défaut
    C'est qd meme bizarre parce que j'ai été sur la base de données, j'ai fait "insérer" donc j'ai remplis le formulaire pour mettre les valeurs à enregistrer et c'est Mysql lui meme qui a construit la requete. Si mon champ accueil_id est un auto-increment, je ne vais qd meme pas lui donner de valeur?...
    MySQL aurait du le sortir de la requete tt seul, non?

  7. #7
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Quand une colonne est en auto_increment il ne faut pas la préciser dans l'ordre INSERT : http://mysql.developpez.com/faq/?pag...CREMENT_insert

    Qui plus est, le refus de cette valeur par la nouvelle version de MySQL est certainement dû à ton SQL MODE (SELECT @@SQL_MODE).
    Cf http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html
    Pensez au bouton

  8. #8
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Citation Envoyé par linou
    ... c'est Mysql lui meme qui a construit la requete.
    Tu veux dire: "c'est phpMyAdmin lui meme qui a construit la requete" plutôt, non?
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 171
    Points : 70
    Points
    70
    Par défaut
    Citation Envoyé par Maximilian
    Quand une colonne est en auto_increment il ne faut pas la préciser dans l'ordre INSERT : http://mysql.developpez.com/faq/?pag...CREMENT_insert
    J'ai pourtant tjs fait comme ca et je n'ai jamais eu aucun souci....

    Citation Envoyé par pcaboche
    Citation Envoyé par linou
    ... c'est Mysql lui meme qui a construit la requete.
    Tu veux dire: "c'est phpMyAdmin lui meme qui a construit la requete" plutôt, non?
    Oui, pardon, je passe par phpMyAdmin pour visualiser la base

  10. #10
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Citation Envoyé par linou
    J'ai pourtant tjs fait comme ca et je n'ai jamais eu aucun souci....
    Oui parce que jusqu'à maintenant ça devait te retourner un warning au lieu d'une erreur et effectuer quand même l'insertion (cf ma remarque précédente). En quel SQL mode es-tu ?
    Pensez au bouton

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 171
    Points : 70
    Points
    70
    Par défaut
    Citation Envoyé par Maximilian
    (cf ma remarque précédente). En quel SQL mode es-tu ?
    Voila le retour du SELECT @@SQL_MODE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

  12. #12
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Si tu (ou PHPMyAdmin en l'occurrence) tiens absolument à continuer à utiliser des requêtes syntaxiquement invalides, enlève le strict_trans_tables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET GLOBAL SQL_MODE='NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
    Ca devrait résoudre le problème mais ce n'est pas standard ni très élégant...
    Pensez au bouton

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 171
    Points : 70
    Points
    70
    Par défaut
    ben si la version correcte c'est de ne pas mettre les champs auto-incrementés dans la requete, je prefere ne pas les mettre et laisser comme ca.
    Par contre, tu donnes comment faire pour pour lever la correction, mais je prefererai mettre ma base de developpement avec le meme niveau de correction syntaxique et donc savoir comment activer cette verification.

    Est ce quil faut faire comme ca?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET GLOBAL SQL_MODE = 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

  14. #14
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Oui (à partir de MySQL 4.1, avant il faut démarrer le serveur avec l'option --sql_mode=...)
    Pensez au bouton

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 171
    Points : 70
    Points
    70
    Par défaut
    c'est la version 5.0 donc c'est bon. Je teste ca ce soir et selon le resultat, je mets le tag resolu ou pas.

    Merci bcp

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 171
    Points : 70
    Points
    70
    Par défaut
    Je viens d'essayer de changer la valeur du sql mode.

    Apparemmennt, d'origine, il ne contient aucune valeur, c'est vide lorsque je fait un select.

    J'ai essayé de faire la requete pour changer les valeurs mais voila le resultat :
    Erreur
    requête SQL:
    SET GLOBAL SQL_MODE = 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

    MySQL a répondu:
    #1231 - Variable 'sql_mode' can't be set to the value of 'NO_ENGINE_SUBSTITUTION'
    quest ce que je dois faire? A quoi sert le "no_engine substitution"?

  17. #17
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Citation Envoyé par linou
    quest ce que je dois faire?
    En toute logique, ne pas mettre le no_engine_substitution

    A quoi sert le "no_engine substitution"?
    C'est expliqué dans le lien que je t'ai donné un peu plus haut.
    Pensez au bouton

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Out-of-range value que dans une clause WHERE
    Par Marc_27 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 30/07/2012, 15h57
  2. [MySQL] Incorrect string value: '\xE9sireu...' for column
    Par ETVigan dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 15/07/2010, 13h36
  3. Out of range values
    Par Lolitaaa dans le forum Général Java
    Réponses: 1
    Dernier message: 09/12/2009, 12h00
  4. Data truncation: Out of range value
    Par briceg dans le forum Développement de jobs
    Réponses: 7
    Dernier message: 06/11/2009, 16h37
  5. Réponses: 1
    Dernier message: 25/08/2006, 07h57

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