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

MySQL Discussion :

1364 Field 'id' doesn't have a default value [MySQL-5.7]


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 333
    Par défaut 1364 Field 'id' doesn't have a default value
    Bonjour,
    J'utilise MySQL sous XAMPP
    De temps à autre, cette erreur s'affiche :
    1364 Field 'id' doesn't have a default value
    ma variable sql_mode est = NO_ZERO_IN_DATE,NO_ZERO_DATE,NO_ENGINE_SUBSTITUTION
    Des discussions indiquent que l'erreur serait liée aux modes STRICT_ALL_TABLES et/ou STRICT_TRANS_TABLES
    Comme je ne suis pas dans ce cas, quelle pourrait être l'origine de cette erreur ?
    Merci pour votre éclairage

  2. #2
    Membre éclairé Avatar de Chou-ette
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2018
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2018
    Messages : 57
    Par défaut
    Bonjour,

    Il nous faudrait la structure de la table en question pour pouvoir répondre, mais à priori, ce genre d'erreur se produit souvent lors d'un INSERT qui ne contiendrait pas toutes les valeurs NON NULL de la table.

  3. #3
    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 882
    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 882
    Par défaut
    Salut à tous.

    Quand je déclare une clef primaire, je mets ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    `id`  integer unsigned  NOT NULL  AUTO_INCREMENT  PRIMARY KEY,
    Chaque valeur de la colonne doit être unique puisque c'est une clef primaire.
    Je mets donc "NOT NULL" pour signifier ce choix.
    Comme tu ne nous as pas donné la déclarative de ta colonne 'id', je suppose que c'est ce "NOT NULL" qui manque dans ta déclarative.

    "AUTO_INCREMENT" signifie qu'à chaque insertion, la valeur de cette colonne est augmenté de +1.
    Le type de la colonne est donc un nombre non signée "integer unsigned".

    Cordialement.
    Artemus24.
    @+

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 333
    Par défaut
    Citation Envoyé par Artemus24 Voir le message
    Salut à tous.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    `id`  integer unsigned  NOT NULL  AUTO_INCREMENT  PRIMARY KEY,
    Chaque valeur de la colonne doit être unique puisque c'est une clef primaire.
    Je mets donc "NOT NULL" pour signifier ce choix.
    Le type de la colonne est donc un nombre non signée "integer unsigned".
    @+
    Bonjour Artemus24, Chou-ette,
    J'utilise le composant SEBLOD pour Joomla. La table qui me pose problème est créée automatiquement par l'ajout d'un champ. Par défaut, elle comporte une clé primaire non incrémentée, non signée et non NULL.
    Quand j'ajoute des colonnes supplémentaires dans cette table, avec une requête du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ALTER TABLE ma_table
      ADD `ma_colonne` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL, ...
    L'erreur apparait d'abord sur l'id, puis sur les autres colonnes.

    Sous MySQL, j'observe que la "cardinalité" de la clé primaire = 2, alors le nombre de colonnes de la table = 35. La "cardinalité" n'évolue pas après l'exécution de la requête manuelle.
    Est-ce que cela pourrait être à l'origine de l'erreur ?
    Si oui, comment modifier la valeur de la cardinalité ?
    Alain

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 333
    Par défaut
    Bonjour,
    Je vais clore cette discussion. L'erreur provient d'erreur de script SEBLOD, j'applique une méthode pour la fixer.
    Merci pour votre aide

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 333
    Par défaut Field 'id' doesn't have a default value
    Bonjour,
    J'ai recréé une base avec des tables vierge, après 2 insertions de ligne, l'erreur "Field 'id' doesn't have a default value" est de retour
    Je doute maintenant du bon fonctionnement de XAMPP !!!

    Pouvez-vous m'indiquer si la variable sql_mode = NO_ZERO_IN_DATE,NO_ZERO_DATE,NO_ENGINE_SUBSTITUTION, peut être à l'origine du problème ?

    Je lis sur des forums qu'il est nécessaire de remplacer la variable par ONLY_FULL_GROUP_BY,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_UBSTITUTION
    et surtout supprimer STRICT_TRANS_TABLES

    Quels sont vos avis, SVP
    Alain

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

Discussions similaires

  1. [MySQL-5.5] Table storage engine for 'toto' doesn't have this option
    Par FredNV dans le forum Administration
    Réponses: 3
    Dernier message: 18/01/2017, 20h41
  2. Réponses: 2
    Dernier message: 30/05/2016, 14h38
  3. Field 'Nom' doesn't have a default value
    Par ArcTan dans le forum Hibernate
    Réponses: 11
    Dernier message: 06/06/2013, 16h59
  4. MyView doesn't have a primary key
    Par MarwenGafsi dans le forum Requêtes
    Réponses: 2
    Dernier message: 11/08/2011, 13h23
  5. [PowerBuilder] Datawindow doesn't have UPDATE...
    Par marie mouse dans le forum Powerbuilder
    Réponses: 2
    Dernier message: 23/05/2005, 11h38

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