web-dev-qa-db-fra.com

mysql Impossible de lire la valeur d'incrémentation automatique à partir du moteur de stockage

J'ai une table mysql avec un champ id en incrémentation automatique.

Lorsque j'insère des valeurs dans la table, l'erreur est générée

1467 - Impossible de lire la valeur d'incrémentation automatique à partir du moteur de stockage

De plus, le show table status me montre que le champ avec incrémentation automatique a 

18446744073709551615 en tant que valeur Auto_increment.

Quel serait le problème quelqu'un peut-il m'aider ...?

18
ashu

Le problème pourrait être absolument: convert 18446744073709551615 en hex et vous trouverez
$ FFFF-FFFF-FFFF-FFFF .
Si votre champ est un 64bit non signé, vous atteignez sa limite.

12
Marco

J'ai eu la même erreur mais dans mon cas, j'avais environ 1.5k enregistrements dans la table ..__ Je l'ai corrigé en réinitialisant AUTO INCREMEN comme ça:

ALTER TABLE `table_name`  AUTO_INCREMENT = 1
24
infinity

J'ai commencé à avoir cette erreur quelques semaines en arrière lors de l'exécution d'instructions insert:

Duplicate entry '127' for key 'PRIMARY'

... même si ma table était configurée pour une incrémentation automatique. Je suis entré et ai changé la valeur auto_increment de 127 à 128 puis j'ai commencé à avoir cette erreur:

1467 - Failed to read auto-increment value from storage engine

J'ai fini par comprendre que la table avait été initialement créée avec des colonnes tinyint pour l'ID non standard. Il ne pouvait donc pas comprendre les nombres supérieurs à 127. J'ai changé le type de colonne en nombres entiers corrects, ce qui a résolu le problème.

J'espère que ça aide quelqu'un :)

11
Mike

Pour ma part, j'ai commis une erreur stupide. J'avais précédemment modifié ma table et changé le nom de la colonne AUTO_INCREMENT de ID à id. Ainsi, étant donné que les noms de colonne sont sensibles à la casse, les insertions ultérieures n'ont pas pu trouver la colonne d'origine.

6
che-azeh

En fait, vous pouvez simplement modifier la colonne pour supprimer sa propriété auto_increament et la redéfinir en tant que auto_increment. De mon côté, cette façon a fonctionné.

5
Shinbo

Je vais la même erreur. Je viens de modifier la table et augmenter la taille de mon champ incrémentation automatique, puis exécutez la requête suivante -

ALTER TABLE `table_name`  AUTO_INCREMENT = 6221;

où 6221 est la dernière valeur du fichier avec Auto_increment.

3
Deepak Sharma

J'ai rencontré cette erreur pour la première fois il y a moins d'une heure. La réinitialisation de l'auto_increment à l'aide d'une instruction SQL dans PHP MyAdmin a échoué. Après avoir cherché une solution, j'ai abandonné la table et créé un remplaçant. L'erreur est restée. En regardant de plus près, l'auto_increment était défini sur 0 même si j'avais spécifiquement défini les paramètres primary_key et auto_increment lors de la création des champs. Réinitialiser manuellement auto_increment sur 1, en utilisant à nouveau PHP MyAdmin, a éliminé l'erreur. Heureusement pour moi, je ne travaillais qu'avec un tableau à 3 colonnes contenant quelques lignes de données de test.

2
Robert

J'ai eu ce problème aujourd'hui aussi. J'ai une table avec plus de deux millions de lignes et j'ai essayé d'ajouter 140 lignes supplémentaires avec LOAD DATA lorsque cette erreur s'est produite. Je suis passé au moteur MyISAM et tout a fonctionné.

1

Le problème était que l'auto_increment était défini sur 0, mais le réglage de l'auto_increment n'a pas fonctionné (il est resté à 0) .

0
Markus Grob

J'ai eu le même problème et la solution a été de changer la colonne de smallint (6) à int.

0
Lee

Je l'ai corrigé en supprimant l'incrément automatique, en sauvegardant la table, puis en rajoutant automatiquement.

0
JakesIV