sql:转换参数 $1 类型:不支持的类型 []uuid.UUID,数组的一部分

问题描述 投票:0回答:1

在表结构所在的 postgresql 中进行一些插入工作

CREATE TABLE user_subservices(
    user_id        uuid,
    subservice_id  uuid
);

我传递一个 user_id 数组和一个 subservice_id

q:=INSERT INTO user_subservices (user_id,subservice_id) VALUES  (unnest(Array[$1]::uuid[]),$2) 

通过

[]uuid.UUID
$1
和单个 uuid 为
$2

我正在使用 gorm 来运行这些查询

err := db.dbConn.DB.Debug().Exec(q, users, Id).Error

在调试中我得到:

INSERT INTO user_subservices (user_id,subservice_id) VALUES  (unnest(Array['[8bf23c03-4112-4097-a352-b567d5a00052 9epolf4b-ff4a-49ef-bojd-2890ff3a7yhf]']::uuid[]),'00uj9000-0100-0120-0000-034000000068')

它没有作为正确的数组传递给插入

插入任何解决方案??

sql postgresql go go-gorm
1个回答
0
投票

从调试日志中,这是操作中使用的 SQL 查询:

INSERT INTO user_subservices (user_id, subservice_id)
VALUES (
    unnest(Array('[8bf23c03-4112-4097-a352-b567d5a00052 9epolf4b-ff4a-49ef-bojd-2890ff3a7yhf]')::uuid[]),
    '00uj9000-0100-0120-0000-034000000068'
)

这是一个错误的查询,正确的应该是:

INSERT INTO user_subservices (user_id, subservice_id) 
VALUES (
    unnest(Array['8bf23c03-4112-4097-a352-b567d5a00052', '9epolf4b-ff4a-49ef-bojd-2890ff3a7yhf']::uuid[]),
    '00uj9000-0100-0120-0000-034000000068'
)

看引号(

'
)和逗号(
,
)的位置,还有
Array()
是不正确的语法,应该是
Array[]
.


除此之外,我发现您的查询存在另一个问题。其中两个 UUID 无效:

  • 9epolf4b-ff4a-49ef-bojd-2890ff3a7yhf
  • 00uj9000-0100-0120-0000-034000000068

即使在修复查询后,您也可能会收到错误

SQL Error [22P02]: ERROR: invalid input syntax for type uuid: "00uj9000-0100-0120-0000-034000000068"
。然而,它可以通过提供有效的 UUID 轻松解决

© www.soinside.com 2019 - 2024. All rights reserved.