MySql に列を自動インクリメントに設定できない問題が存在する
P粉998100648
P粉998100648 2023-08-22 16:23:53
0
2
616
<p>「Bestelling」という名前のテーブルがあり、「Id」(主キー)、「KlantId」、「Datum」、「BesellingsTypeId」の 4 つの列があります。列 ID を自動的にインクリメントしたいのですが、これを実行しようとすると、次のエラーが発生します: </p> <pre class="brush:php;toolbar:false;">エラー 1062: ALTER TABLE により自動インクリメント並べ替えが発生し、主キー 'PRIMARY' のエントリ '1' が重複しました。 SQL ステートメント: ALTER TABLE `aafest`.`aafest_beselling` CHANGE COLUMN `Id` `Id` INT(11) NOT NULL AUTO_INCREMENT エラー: ロールバック スクリプトの実行中にエラーが発生しました。詳細は以下の通りです。 エラー 1046: データベースが選択されていません SQL ステートメント: CREATE TABLE `aafest_beselling` ( `Id` int(11) NOT NULL、 `KlantId` int(11) デフォルト NULL、 「データム」日付 DEFAULT NULL、 `BestellingstypeId` int(11) デフォルト NULL、 主キー (`Id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1</pre> <p>誰かアイデアはありますか? </p>
P粉998100648
P粉998100648

全員に返信(2)
P粉391677921

列を auto_increment に変換しようとしたときに、行の 1 つの値が 0 になったときにもこの問題が発生しました。代わりに次のように設定することもできます:

リーリー

セッションをセットアップします。

これにより、列がゼロ ID の auto_increment に変更されます。

ゼロは理想的ではありませんし、auto_increment 列での使用もお勧めしません。残念ながら、これは継承されたデータセットの一部であるため、現時点では変更できません。

その後、設定 (およびその他の設定) をクリアすることをお勧めします:

リーリー

ただし、現在のクライアント セッションが終了するとクリアされます。

「NO_AUTO_VALUE_ON_ZERO」設定の詳細については、こちらをご覧ください。

いいねを押す +0
P粉146080556

これは、テーブルに 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 をご覧ください。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート