php - MySql 在 INSERT INTO...SELECT 时生成相同的 UUID

标签 php mysql

这个错误只发生在生产服务器上(当然)。 我无法在任何机器上复制它。

假设我必须执行这样的查询

INSERT INTO my_table(UUID, Name, Surname) SELECT UUID(), Name, Surname FROM other_table

我希望任何新生成的行都有不同的 UUID,这正是在任何环境中都会发生的情况。生产除外。

在那里,如果我运行该查询,MySQL 会生成所有相同的 UUID。看起来像这样,它不是为每一行生成一个新的,而是只运行一次函数然后复制值。

我很确定这是由于某种配置造成的,但我不明白是哪一种。

此外,它可能并不严格与 MySQL 相关:如果我从我的 PC 运行查询但在使用 SQLyog 的生产服务器上,查询工作正常并生成所有不同的 UUID。

会不会是 PHP 的问题?我目前正在使用 mysqli 驱动程序。

只是说清楚,如果我从我的 PC 上运行这个查询

SELECT UUID()
FROM (SELECT 1 AS id UNION ALL
      SELECT 1 AS id UNION ALL
      SELECT 1 AS id UNION ALL
      SELECT 1 AS id UNION ALL
      SELECT 1 AS id UNION ALL
      SELECT 1 AS id UNION ALL
      SELECT 1 AS id UNION ALL
      SELECT 1 AS id UNION ALL
      SELECT 1 AS id UNION ALL
      SELECT 1 AS id
     ) i

结果是

bb79716f-f0ba-11e9-a154-f23c91fbfa4a
bb79717a-f0ba-11e9-a154-f23c91fbfa4a
bb79717c-f0ba-11e9-a154-f23c91fbfa4a
bb79717e-f0ba-11e9-a154-f23c91fbfa4a
bb79717f-f0ba-11e9-a154-f23c91fbfa4a
bb797181-f0ba-11e9-a154-f23c91fbfa4a
bb797183-f0ba-11e9-a154-f23c91fbfa4a
bb797185-f0ba-11e9-a154-f23c91fbfa4a
bb797187-f0ba-11e9-a154-f23c91fbfa4a
bb797189-f0ba-11e9-a154-f23c91fbfa4a

但是如果我在服务器上使用 PHP 运行相同的查询,结果是

0aef9b78-f0bc-11e9-bfe5-7a7919257c79
0aef9b78-f0bc-11e9-bfe5-7a7919257c79
0aef9b78-f0bc-11e9-bfe5-7a7919257c79
0aef9b78-f0bc-11e9-bfe5-7a7919257c79
0aef9b78-f0bc-11e9-bfe5-7a7919257c79
0aef9b78-f0bc-11e9-bfe5-7a7919257c79
0aef9b78-f0bc-11e9-bfe5-7a7919257c79
0aef9b78-f0bc-11e9-bfe5-7a7919257c79
0aef9b78-f0bc-11e9-bfe5-7a7919257c79
0aef9b78-f0bc-11e9-bfe5-7a7919257c79

最佳答案

我偶然发现了与 MySQL 相同的问题,并尝试使用 @bimbo1989 提出的解决方案。

我花了一个小时尝试不同的解决方案,结果证明,这些 UUID 只是看起来一样,但实际上,三个字符赋予了唯一性 (6,7,8)。

确保 UUID 是否相同或只是看起来相同。

关于php - MySql 在 INSERT INTO...SELECT 时生成相同的 UUID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58428732/

相关文章:

php - 黑客尝试导致 nginx 崩溃

php - MySQL-PHP 多个成员并将名称加入日期

php - API认证困惑

mysql - 如何通过MYSQL查询对客户进行分类?

php - 意外的 T_ENCAPSED_AND_WHITESPACE,预期 T_STRING 或 T_VARIABLE 或 T_NUM_STRING 错误

PHP将表单中的数据输入SQL数据库

php - 无法显示 MySQL 表中的数据

mysql - SQLSTATE[42S22] : Column not found: 1054 Unknown column 'adjusted_amount' in 'field list'

php - 奇怪的 Unresolved PDO 错误 : Syntax error or access violation: 1064 You have an error in your SQL syntax;

mysql - 如何在 ActiveRecord 中重新创建此查询