gpt4 book ai didi

postgresql - RavenDB Sql 复制和 Postgres uuid

转载 作者:行者123 更新时间:2023-11-29 12:55:55 24 4
gpt4 key购买 nike

我已经使用 Postgres/Npgsql 设置了 Sql Replication。

我们在 Ravendb 中使用 Guids 作为 id。只要我在 Postgres 中的 id 列是 varchar 类型,一切都正常,但如果我将它设置为 uuid,它应该是匹配 的正确类型Guid,失败了。

对于除 id 之外的其他列,它也会失败。

Postgres 日志给我:

operator does not exist: uuid = text at character 34 HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.

Postgres 架构如下所示:

CREATE TABLE public.materiels
(
id uuid NOT NULL,
type character varying(50),
nummer integer,
...
CONSTRAINT materiels_pkey PRIMARY KEY (id)
)

第一行替换为

id character varying(50) NOT NULL

会让它发挥作用。

我的复制设置如下所示:

Replication setup如果我将复制设置为使用 MSSql,它会使用 MSSql 的 uniqueidentifier 数据类型。

最佳答案

如果你想比较 UUIDTEXT,那么你需要为此创建运算符。解决您的错误的方法如下所示:

CREATE FUNCTION uuid_equal_text(uuid, text) 
RETURNS boolean
LANGUAGE SQL IMMUTABLE
AS
$body$
SELECT $1 = $2::uuid
$body$;

CREATE OPERATOR =(
PROCEDURE = uuid_equal_text,
LEFTARG = uuid,
RIGHTARG = text);

编辑:这个问题的作者自己提出的替代解决方案:

CREATE CAST (text AS uuid)
WITH INOUT
AS IMPLICIT;

关于postgresql - RavenDB Sql 复制和 Postgres uuid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43344421/

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