4
私の一部のMySQLデータベース(MySQL 5.7.9)のいくつかのテーブルにUUIDを追加しようとしています。 DB内のすべてのエントリは、NULL値を受信していますので、テーブルに既に存在するすべてのエントリのために、私は(UUIDを生成し、その後MySQLは複数の行に対してUUID()を生成します
ALTER TABLE `mytable` ADD COLUMN `Uuid` BINARY(16) DEFAULT NULL;
:まず第一に、私はUUIDを受け取るために列を追加することにより開始します。それはUUIDフィールドの中で今
UPDATE `mytable` SET Uuid= unhex(replace(uuid(),'-','')) WHERE Uuid IS NULL;
、事は私がこれを行うことにより、いくつかの非常に奇妙な動作を得ることである;。私のデータベースの一部に、生成されたすべてのUUIDが一意である(予想通り)しかし、他のデータベースに、生成されたすべてのUUIDは同一(同一ではない)です。
MySQLのクエリオプティマイザが原因であると思われます。これは、動作が異なるデータベースインスタンス間で一貫しないためです(MySQL 5.7.9)。しかし、私はこの問題を解決する方法を知りません。
だから、私は何か間違っていますか?
@TimBiegeleisen。 。 。これは古いバグレポートで、これを修正するコードは10年前にコミットされているはずです。修正がコードベースに組み込まれたことがないかどうか知っていますか? –
可能な複製:https://stackoverflow.com/questions/9750536/mysql-uuid-duplication-bug –
@GordonLinoff彼のクエリは同じタイムスタンプで繰り返しUUIDを呼び出していますが、少なくともこれは私の推測です。回避策を知っていますか? –