MYSQL バッチ挿入を解決すると、UUID_SHORT が表示されました。 1062 - キー 'PRIMARY' のエントリ 'xxx' が重複しています

1. 問題の説明

MYSQL バッチ挿入時、UUID_SHORT を使用すると 1062 -DuplicateEntry 'xxx' for key 'PRIMARY' が表示される
ここに画像の説明を挿入

2. シーンの説明:

テスト環境では正常に挿入できますが、本番環境に移行すると失敗します。このニーズにどう対処するか?

2.1 方法 1:

回答: バッチで挿入されたデータを取得できる場合は、最初にテスト環境でデータを生成し、それを SQL ステートメントに変換し、実稼働環境で実行することで問題を解決できます。以下の図に示すように、テスト環境で生成されたデータは、ツールを通じて SQL にインポートされ、本番環境で実行されます。
ここに画像の説明を挿入
ここに画像の説明を挿入

2.2 方法 2:

回答: ほとんどの場合、本番環境のデータにアクセスすることは不可能ですが、[主キーの重複] により現在のタスクを完了できなくなるため、次の方法の使用を検討できます。これも 2.1 の代わりに推奨されます。

(1) SQL は次のとおりです。主に「number」という名前の変数をカスタマイズします。各挿入の前に、主キー ID の値は +1 になります。

set @number = 1;
INSERT INTO '你的表名'
SELECT @number := @number+1 AS id,CONCAT('解决MySQL UUID_SHORT批量生成主键重复问题:',u.name) 
FROM '你的表名' AS `u`

(2) 元のテーブル データ:
ここに画像の説明を挿入
(3) 正常に実行されたスクリーンショット:

ここに画像の説明を挿入
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_40600379/article/details/128999174
おすすめ