【发布时间】:2017-08-20 17:45:30
【问题描述】:
我正在使用 PHP 生成 UUID,根据找到的函数 here
现在我想将它存储在 MySQL 数据库中。存储 UUID v4 的最佳/最有效的 MySQL 字段格式是什么?
我目前有 varchar(256),但我很确定这比必要的要大得多。我找到了很多差不多的答案,但他们通常对他们所指的 UUID 的形式模棱两可,所以我要求提供具体的格式。
【问题讨论】:
-
如果您只需要某种随机标记,则根本不需要 uuid。 varchar256 不需要 256 个字节,所以“太大”可能没什么大不了的。
-
你不需要 uuid-anything。只是随机字节。您可以将它们存储为十六进制或其他格式。 php.net/manual/en/function.random-bytes.php
-
获取 16 个随机字节。存储为十六进制。而已。登录完成后不要忘记从数据库中折腾。哦,不要像答案所暗示的那样作为获取请求传递,因为那太疯狂了。
-
MySQL 有函数
UUID()所以你不需要 PHP 来生成它。您可以删除破折号并将十六进制数字保存为binary(16)。如果您通过触发器进行操作,则为SELECT UNHEX(REPLACE(UUID(), '-', ''));,如果您需要索引,请设置为unique,获利。 -
@N.B.那是一个UUID1。
random_bytes来自 OS CSPRNG,这就是您在这种情况下想要的。