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) 正常に実行されたスクリーンショット: