recherche

Maison  >  Questions et réponses  >  le corps du texte

Le problème de l'impossibilité de définir l'incrémentation automatique des colonnes existe dans MySql

<p>J'ai une table nommée "Bestelling" avec 4 colonnes : "Id" (clé primaire), "KlantId", "Datum", "BestellingsTypeId", maintenant je veux que l'ID de colonne soit automatiquement incrémenté, mais, quand J'essaie de le faire et j'obtiens l'erreur suivante : </p> <pre class="brush:php;toolbar:false;">ERREUR 1062 : ALTER TABLE a provoqué une réorganisation par incrémentation automatique, entraînant une entrée en double « 1 » pour la clé primaire « PRIMARY » Instruction SQL : ALTER TABLE `aafest`.`aafest_bestelling` CHANGER DE COLONNE `Id` `Id` INT(11) NON NULL AUTO_INCREMENT ERREUR : une erreur s'est produite lors de l'exécution du script de restauration. Les détails sont ci-dessous. ERREUR 1046 : aucune base de données sélectionnée Instruction SQL : CRÉER TABLE `aafest_bestelling` ( `Id` int(11) NON NULL, `KlantId` int(11) NULL PAR DÉFAUT, Date de « donnée » PAR DÉFAUT NULL, `BestellingstypeId` int(11) NULL PAR DÉFAUT, CLÉ PRIMAIRE (`Id`) ) MOTEUR=InnoDB DEFAULT CHARSET=latin1</pre> <p> Quelqu'un a-t-il des idées ? </p>
P粉998100648P粉998100648465 Il y a quelques jours603

répondre à tous(2)je répondrai

  • P粉391677921

    P粉3916779212023-08-23 15:36:57

    J'ai également eu ce problème lorsque j'ai essayé de convertir une colonne en auto_increment, l'une des lignes avait une valeur de 0. Une alternative consiste à définir :

    SET SESSION sql_mode='NO_AUTO_VALUE_ON_ZERO';

    Pour mettre en place la séance.

    Cela changera la colonne en un auto_increment avec zéro ID.

    Zéro n'est pas idéal et je ne recommande pas de l'utiliser dans les colonnes auto_increment. Malheureusement, cela fait partie de l'ensemble de données hérité, je ne peux donc pas le modifier pour l'instant.

    Il est préférable d'effacer les paramètres (et autres paramètres) par la suite :

    SET SESSION sql_mode='';

    Bien qu'il soit effacé à la fermeture de la session client en cours.

    Tous les détails sur le paramètre 'NO_AUTO_VALUE_ON_ZERO' ici.

    répondre
    0
  • P粉146080556

    P粉1460805562023-08-23 00:06:11

    Cela se produit si la table contient un enregistrement existant avec un identifiant de 0 (ou un nombre négatif). La mise à jour de tous les enregistrements existants pour utiliser des valeurs positives permettra de définir auto_increment sur cette colonne.

    Edit : Certaines personnes ont demandé comment 0 apparaissait. Pour clarifier, le manuel de référence MySQL indique : "Pour les types numériques, la valeur par défaut est 0, mais pour les types entiers ou à virgule flottante avec l'attribut AUTO_INCREMENT, la valeur par défaut est la valeur suivante dans la séquence." avant d'activer auto_increment dans Lors de l'exécution d'une insertion sur une table sans fournir de valeur pour une colonne numérique, la valeur par défaut de 0 est utilisée lors de l'insertion. Plus de détails peuvent être trouvés sur https://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html.

    répondre
    0
  • Annulerrépondre