UUID 在理论上应该是全球唯一的,但在 MySQL 中偶尔会出现 UUID 重复的情况。许多开发者会怀疑是否是 Navicat 这样的数据库管理工具导致了问题。
UUID 生成方式问题
UUID()
函数生成的是版本 1 的 UUIDNavicat 显示问题
应用程序逻辑问题
-- 查询真正重复的 UUID
SELECT uuid_column, COUNT(*)
FROM your_table
GROUP BY uuid_column
HAVING COUNT(*) > 1;
-- 检查 MySQL 版本和 UUID 函数
SELECT VERSION(), UUID();
审查应用程序中生成 UUID 的代码,特别是: - 是否在循环中错误地只生成了一次 UUID - 是否使用了可靠的 UUID 库
使用 UUID v4
-- 如果使用 MySQL 8.0+, 可以使用 UUID_TO_BIN 和随机生成的 UUID
INSERT INTO your_table (uuid_column)
VALUES (UUID_TO_BIN(UUID(), 1));
应用层生成 UUID
UUID.randomUUID()
)使用 AUTO_INCREMENT 替代
ALTER TABLE your_table MODIFY COLUMN id BIGINT AUTO_INCREMENT;
Navicat 特定检查
UUID_TO_BIN()
和 BIN_TO_UUID()
函数提高存储和查询效率通过以上步骤,您应该能够确定 UUID 重复的真实原因,并排除 Navicat 只是显示问题的可能性。