ホームページ  >  に質問  >  本文

MySql に列を自動インクリメントに設定できない問題が存在する

<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粉998100648P粉998100648424日前566

全員に返信(2)返信します

  • P粉391677921

    P粉3916779212023-08-23 15:36:57

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

    リーリー

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

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

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

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

    リーリー

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

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

    返事
    0
  • P粉146080556

    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 をご覧ください。

    返事
    0
  • キャンセル返事