2

だから私はちょうど私のテーブルを切り捨てましたが、今私の主キーは自動インクリメントされません。テーブルに2番目のアイテムを追加するたびに、1062が返されます。キー「PRIMARY」の重複エントリ「0」

テーブルを切り捨てると、自動インクリメントが1にリセットされるだけだと思いました。

私は自分に何ができるかを探し回っていますが、切り捨てるだけだと言う人がたくさんいます。

私がしたこと

"TRUNCATE TABLE mytable;"

私は何か間違ったことをしたに違いない。

4

3 に答える 3

9

このバグはMysql5.0には影響せず、6.0、5.1.23、および5.1BKで再現可能です。

証拠については、このリンクを参照してください

以下はすぐに利用可能であり、効果的な回避策は、テーブルが切り捨てられた後にautoinc値を変更することです。

切り捨ての直後にautoinc値を再初期化します

alter table tablename AUTO_INCREMENT = n;/*必要に応じてnを設定します*/

于 2012-05-24T20:16:40.257 に答える
0

MySQL 5.0.13以降、外部キー制約があるかどうかに関係なく、AUTO_INCREMENTカウンターはTRUNCATETABLEによってゼロにリセットされます。

あなたがする必要があるのは:

SET FOREIGN_KEY_CHECKS = 0;

テーブルを切り捨てて、に戻します

SET FOREIGN_KEY_CHECKS = 1;

TRUNCATEが起動されると、テーブルハンドラーは最後に使用されたAUTO_INCREMENT値を記憶しませんが、最初からカウントを開始します。これは、通常はシーケンス値を再利用しないMyISAMとInnoDBにも当てはまります。

于 2013-07-24T07:13:59.840 に答える
0

このクエリを使用すると機能します。

ALTER TABLE table_nameCHANGE table_id table_idINT(11)NOT NULL AUTO_INCREMENT

于 2013-08-05T11:05:11.523 に答える