自動インクリメントとして1つのidフィールドを持つmysqlテーブルがあります。
テーブルに値を挿入するとエラーが発生します
1467-ストレージエンジンからの自動インクリメント値の読み取りに失敗しました
また、show table status
は、自動インクリメントのフィールドに
18446744073709551615
Auto_increment値として。
誰が私を助けることができるのか....?
問題は絶対にそれである可能性があります:18446744073709551615を16進数に変換すると、
$ FFFF-FFFF-FFFF-FFFF。
フィールドが符号なし64ビットの場合、その制限に達します。
同じエラーが発生しましたが、私の場合、テーブルに約1.5kのレコードがありました。 AUTO INCREMENを次のようにリセットして修正しました。
ALTER TABLE `table_name` AUTO_INCREMENT = 1
挿入ステートメントを実行すると、数週間前にこのエラーが発生し始めました。
Duplicate entry '127' for key 'PRIMARY'
...テーブルが自動インクリメントに設定されていても。私が行ってauto_incrementの値を127から128に変更すると、このエラーが発生し始めました。
1467 - Failed to read auto-increment value from storage engine
私は最終的にテーブルが標準の整数ではなくIDのtinyint列で最初に作成されたことに気付いたので、基本的に127より大きい数値を理解できませんでした。列のタイプを適切な整数に切り替えて、問題を解決しました。
それが誰かを助けることを願っています:)
私の側では、私は愚かな間違いをしました。以前にテーブルを変更し、AUTO_INCREMENT
列の名前をID
からid
に変更しました。したがって、列名では大文字と小文字が区別され、その後の挿入では元の列を見つけることができませんでした。
実際には、列を変更して、そのauto_increament
プロパティを削除し、再度auto_increment
として設定できます。私の側では、この方法でうまくいきました。
私は同じエラーに行きます。テーブルを変更し、自動インクリメントフィールドのサイズを増やしてから、次のクエリを実行します-
ALTER TABLE `table_name` AUTO_INCREMENT = 6221;
ここで、6221は、Auto_incrementで提出された最後の値です。
私はこのエラーを1時間前に初めて経験しました。 PHP MyAdminのSQLステートメントを使用してauto_incrementをリセットしました。MyAdminは失敗しました。解決策を探した後、テーブルを削除し、代替を作成しました。エラーが残っています。詳しく調べたところ、auto_incrementが0に設定されていました。フィールドを作成するときに、primary_keyとauto_incrementを明確に設定しました。auto_incrementを手動で1にリセットし、再度PHP MyAdminを使用して、エラーを解消しました。幸い、私は3列のテーブルでのみ作業していました数行のテストデータを含みます。
自動インクリメントを削除してテーブルを保存し、自動インクリメントを再度追加することで修正しました。
今日もこの問題がありました。 200万行を超えるテーブルがあり、このエラーが発生したときにLOAD DATAを使用してさらに140K行を追加しようとしました。 MyISAMエンジンに切り替えたところ、すべて動作しました。
私の回避策は、テーブルを変更して、orignal_backupのような名前に変更して保存し、次に再び名前をorignal_backupに変更することでした。このトリックは私にとってはうまくいきました。
この問題を解決するには、フィールドのオプションAUTO_INCREMENTをオフにして、もう一度チェックします
Auto_incrementが0に設定されているが、auto_incrementを明示的に設定しても機能しない(0のまま)という問題がありました。 IDを使用して手動でエントリを入力したところ、値が正しく設定されました。
同じ問題があり、解決策は列をsmallint(6)からintに変更することでした。