mysql - 插入主键 UUID_SHORT 时出现重复条目​​ mysql

标签 mysql uuid

到目前为止我还不明白,我收到了重复条目错误消息,我正在尝试为主索引插入 UUID_SHORT。

id 列是整数 18,UUID_SHORT 是使用 BEFORE_INSERT 触发器生成的:

CREATE TRIGGER `TR_Documents_BI` BEFORE INSERT ON `documents`
FOR EACH ROW SET NEW.id = UUID_SHORT()

错误是

 Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '2147483647' for key 'PRIMARY'

我在 stackoverflow 上读到,我应该尝试使用 BigInt 存储数据,但结果并不那么令人信服,因为生成的第一个 UUID_SHORT 给出的结果是:

95161384827879440 

下一个类似自动增量的是

95161384827879440 + 1 

我不明白为什么我不能将 UUID_SHORT 作为我的主索引。

但是,如果我生成 UUID(),问题就不存在;

有人可以帮忙吗?

编辑: 不可能将 UUID_SHORT 存储为整数,明白了!但是当我使用 BigInt(18) 时,我生成了以下条目: 95161384827879440, 95161384827879441, 95161384827879442, 95161384827879443, 95161384827879444

出现以下错误消息:

Warning: #1366 Incorrect integer value: '' for column 'id' at row 1

所以它仍然不是存储在我的列中的生成的 UUID_SHORT() :(

最佳答案

您需要使用BIGINT。 INT(18) 仍然是 32 位,不能容纳 18 位十进制数字。

至于 UUID_SHORT 的唯一性,您应该检查 manual .

关于mysql - 插入主键 UUID_SHORT 时出现重复条目​​ mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18360297/

相关文章:

mysql order by 聚合函数工作不正确

algorithm - 如何生成每个种子字符串都相同的uuid?

user-interface - 缩写 UUID

java - RandomStringUtils.randomAlphanumeric(30) 是有效的 GUID 策略吗?

ruby-on-rails - 随机化数据库记录 ID

mysql - Elasticsearch 6.2 : autocomplete search from MySQL

php - Laravel 4.2 多对多关系 : Can't read from pivot table

java - Android Studio LoginActivity with MySQL - 尝试对网络服务进行身份验证

php - 我如何在我从数据库中获取的 get_file_contents 中使用 if else 条件

c++ - 假设 boost::uuid 不会返回重复项是否安全?