P粉3916779212023-08-23 15:36:57
列を auto_increment に変換しようとしたときに、行の 1 つの値が 0 になったときにもこの問題が発生しました。代わりに次のように設定することもできます:
リーリーセッションをセットアップします。
これにより、列がゼロ ID の auto_increment に変更されます。
ゼロは理想的ではありませんし、auto_increment 列での使用もお勧めしません。残念ながら、これは継承されたデータセットの一部であるため、現時点では変更できません。
その後、設定 (およびその他の設定) をクリアすることをお勧めします:
リーリーただし、現在のクライアント セッションが終了するとクリアされます。
「NO_AUTO_VALUE_ON_ZERO」設定の詳細については、こちらをご覧ください。
P粉1460805562023-08-23 00:06:11
これは、テーブルに ID が 0 (または負の数) の既存のレコードが含まれている場合に発生します。既存のすべてのレコードを正の値を使用するように更新すると、その列に auto_increment を設定できるようになります。
編集: 0 がどのように表示されたのかを尋ねた人もいます。明確にするために、MySQL リファレンス マニュアルには、「数値型の場合、デフォルト値は 0 ですが、AUTO_INCREMENT 属性を持つ整数型または浮動小数点型の場合、デフォルト値はシーケンス内の次の値になります。」と記載されています。 auto_increment を有効にする前に数値列の値を指定せずにテーブルで挿入を実行する場合、挿入中にデフォルト値の 0 が使用されます。詳細については、https://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html をご覧ください。