これは、テーブルに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 。