web-dev-qa-db-ja.com

mysqlがストレージエンジンから自動インクリメント値を読み取れませんでした

自動インクリメントとして1つのidフィールドを持つmysqlテーブルがあります。

テーブルに値を挿入するとエラーが発生します

1467-ストレージエンジンからの自動インクリメント値の読み取りに失敗しました

また、show table statusは、自動インクリメントのフィールドに

18446744073709551615 Auto_increment値として。

誰が私を助けることができるのか....?

23
ashu

問題は絶対にそれである可能性があります:18446744073709551615を16進数に変換すると、
$ FFFF-FFFF-FFFF-FFFF
フィールドが符号なし64ビットの場合、その制限に達します。

16
Marco

同じエラーが発生しましたが、私の場合、テーブルに約1.5kのレコードがありました。 AUTO INCREMENを次のようにリセットして修正しました。

ALTER TABLE `table_name`  AUTO_INCREMENT = 1
26
Alex Rashkov

挿入ステートメントを実行すると、数週間前にこのエラーが発生し始めました。

Duplicate entry '127' for key 'PRIMARY'

...テーブルが自動インクリメントに設定されていても。私が行ってauto_incrementの値を127から128に変更すると、このエラーが発生し始めました。

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

私は最終的にテーブルが標準の整数ではなくIDのtinyint列で最初に作成されたことに気付いたので、基本的に127より大きい数値を理解できませんでした。列のタイプを適切な整数に切り替えて、問題を解決しました。

それが誰かを助けることを願っています:)

15
Mike

私の側では、私は愚かな間違いをしました。以前にテーブルを変更し、AUTO_INCREMENT列の名前をIDからidに変更しました。したがって、列名では大文字と小文字が区別され、その後の挿入では元の列を見つけることができませんでした。

7
che-azeh

実際には、列を変更して、そのauto_increamentプロパティを削除し、再度auto_incrementとして設定できます。私の側では、この方法でうまくいきました。

5
Shinbo

私は同じエラーに行きます。テーブルを変更し、自動インクリメントフィールドのサイズを増やしてから、次のクエリを実行します-

ALTER TABLE `table_name`  AUTO_INCREMENT = 6221;

ここで、6221は、Auto_incrementで提出された最後の値です。

3
Deepak Sharma

私はこのエラーを1時間前に初めて経験しました。 PHP MyAdminのSQLステートメントを使用してauto_incrementをリセットしました。MyAdminは失敗しました。解決策を探した後、テーブルを削除し、代替を作成しました。エラーが残っています。詳しく調べたところ、auto_incrementが0に設定されていました。フィールドを作成するときに、primary_keyとauto_incrementを明確に設定しました。auto_incrementを手動で1にリセットし、再度PHP MyAdminを使用して、エラーを解消しました。幸い、私は3列のテーブルでのみ作業していました数行のテストデータを含みます。

2
Robert

自動インクリメントを削除してテーブルを保存し、自動インクリメントを再度追加することで修正しました。

2
JakesIV

今日もこの問題がありました。 200万行を超えるテーブルがあり、このエラーが発生したときにLOAD DATAを使用してさらに140K行を追加しようとしました。 MyISAMエンジンに切り替えたところ、すべて動作しました。

1

私の回避策は、テーブルを変更して、orignal_backupのような名前に変更して保存し、次に再び名前をorignal_backupに変更することでした。このトリックは私にとってはうまくいきました。

0
Waqar

この問題を解決するには、フィールドのオプションAUTO_INCREMENTをオフにして、もう一度チェックします

0
Diego Gandino

Auto_incrementが0に設定されているが、auto_incrementを明示的に設定しても機能しない(0のまま)という問題がありました。 IDを使用して手動でエントリを入力したところ、値が正しく設定されました。

0
Markus Grob

同じ問題があり、解決策は列をsmallint(6)からintに変更することでした。

0
Lee