2

プロジェクトの 1 つで 1 つの問題に直面しています。csv から innodb テーブルにデータをインポートするインベントリ アップロードがあります。ここで起こったことは、複数のデータ読み込みコマンド (だと思います) で、自動インクリメント値が 18446744073709551615 に設定され、他の挿入が機能しなくなります。以前は正常に動作していました。テーブル内の大量のデータがこの問題を引き起こすかどうかはわかりません。

テーブルの詳細は以下の通り

ソフトウェア バージョン: 5.5.31-0ubuntu0.12.04.1-log - (Ubuntu)

使用された最大の挿入 ID : 17455787099

テーブルの行数: 23887371

これに関連するいくつかの変数は次のとおりです

自動インクリメント インクリメント 1 自動インクリメント オフセット 1 自動コミット ON 自動 sp 権限 ON innodb autoextend インクリメント 8 innodb autoinc ロック モード 1 sql auto は null OFF ドキュメンテーション

テーブルから削除クエリを削除しました。しかし、それでも自動インクリメントは同期していません

どんな助けでも大歓迎です

ありがとう

ニシン

4

1 に答える 1

2

自動インクリメント値は 18446744073709551615 に設定されます-使用される最大挿入 ID: 17455787099

これは少し混乱します。

新しいファイルをロードする前に、自動インクリメント値をリセットしてみてください:

ALTER TABLE tableName AUTO_INCREMENT = 1

編集:

新しい同一のテーブルを作成します:

CREATE TABLE tableName LIKE oldtableName;

すべての行を新しいテーブルにコピーします。auto_incrementing ID を選択しないように注意してください。

INSERT INTO tableName (field2, field3, field4)
SELECT field2, field3, field4 FROM oldtableName ORDER BY oldtableName.id;
DROP oldtableName;
RENAME tableName oldtableName;

これにはしばらく時間がかかります (数時間..またはそれ以上)。

EDIT2

id 列が何も参照されていない場合

ALTER TABLE tableName DROP id

ALTER TABLE tableName ADD id INT NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (id), AUTO_INCREMENT=1
于 2013-08-13T07:55:27.253 に答える