gpt4 book ai didi

mysql - Liquibase 生成不同的 UUID,尽管 uuid() 在 中调用了一次

转载 作者:行者123 更新时间:2023-11-29 03:17:21 28 4
gpt4 key购买 nike

我们在 Liquibase 中运行了以下命令:

<property name="UUID-20-off-General-US" value="uuid()" dbms="mysql"/>
<changeSet id="GeneralDiscountRateCard20" author="foo">
<sql dbms="mysql">
INSERT INTO rate (id, pricing_model, name)
VALUES (${UUID-20-off-General-US}, 'CPM', '20% off Discount US');
INSERT INTO rate_map (id, rate_map_name, rate_id)
VALUES (uuid(), 'general_20_discount_us', ${UUID-20-off-General-US})
</sql>
</changeSet>

我们希望看到两个表中使用相同的 UUID(以及第二个表的 id 的不同 UUID)。相反,我们发现了 3 个不同的 UUID。它们看起来几乎相同,只是数字 5-8 不同:

0dec159a-ded8-11e8-813e-42010a80044f
0dec7a69-ded8-11e8-813e-42010a80044f
0decc891-ded8-11e8-813e-42010a80044f
^^^^

大概是因为 uuid()大约在同一小数秒内被调用。

是否 <property>有延迟插值?有没有办法在对 <property> 的两个引用之间实际拥有相同的 UUID? ?

最佳答案

调用 uuid()将按设计返回不同的 UUID,即使在同一查询中使用也是如此。

MariaDB [(none)]> SELECT uuid(), uuid();
+--------------------------------------+--------------------------------------+
| uuid() | uuid() |
+--------------------------------------+--------------------------------------+
| c6996867-e19c-11e8-b32e-e0cb4eeb0025 | c699686c-e19c-11e8-b32e-e0cb4eeb0025 |
+--------------------------------------+--------------------------------------+

当您运行查询时,您将获得以下 SQL 语句:

INSERT INTO rate (id, pricing_model, name)
VALUES (uuid(), 'CPM', '20% off Discount US');
INSERT INTO rate_map (id, rate_map_name, rate_id)
VALUES (uuid(), 'general_20_discount_us', uuid())

导致三个不同的 UUID。当你想“重用”一个值时,你必须在变量/属性中保存该值,而不是函数调用,然后使用它,就像这样:

<property name="UUID-20-off-General-US" value="'c699686c-e19c-11e8-b32e-e0cb4eeb0025'" dbms="mysql"/>
<changeSet id="GeneralDiscountRateCard20" author="foo">
<sql dbms="mysql">
INSERT INTO rate (id, pricing_model, name)
VALUES (${UUID-20-off-General-US}, 'CPM', '20% off Discount US');
INSERT INTO rate_map (id, rate_map_name, rate_id)
VALUES (uuid(), 'general_20_discount_us', ${UUID-20-off-General-US})
</sql>
</changeSet>

或者您不使用硬编码 <property />标记并通过 Ant 或命令行传递计算值。

关于mysql - Liquibase 生成不同的 UUID,尽管 uuid() 在 <property> 中调用了一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53125272/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com