加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

postgresql – 如何在clojure中使用yesql插入和更新postgres数组

发布时间:2020-12-13 16:01:49 所属栏目:百科 来源:网络整理
导读:我试过传递一个clojure矢量,也尝试了以下格式: -- name: insert-into-sometable!-- inserts in the sometable the lid and uidsINSERT INTO sometable(lid,uids) values(:lid,ARRAY[:uids]) 但这两种方法都会引发数据不匹配错误. 我想如果我可以从查询文件
我试过传递一个clojure矢量,也尝试了以下格式:

-- name: insert-into-sometable<!
-- inserts in the sometable the lid and uids
INSERT INTO sometable
(lid,uids) values(:lid,ARRAY[:uids])

但这两种方法都会引发数据不匹配错误.

我想如果我可以从查询文件中调用postgres数组函数,那么更新和插入可以很容易地完成.请帮忙.

提前致谢

解决方法

第二次尝试的错误消息给出了一个暗淡的暗示:

AssertionError Assert failed: Query argument mismatch.
Expected keys: (:uids])
Actual keys: (:uids)
Missing keys: (:uids])

显然,当yesql尝试解析:uids键时,它会向南移动,因为它会附加数组定义的右括号.让我们尝试别的东西:

-- name: insert-into-sometable<!
-- inserts in the sometable the lid and uids
INSERT INTO sometable
(lid,ARRAY[ :uids ])

注意:uids和数组括号之间的额外空格.

=> (insert-into-sometable<! {:lid 1,:uids [1 2 42])
;; => 1

看起来像yesql中的一个错误,我应该:uid]永远不应该被解析为有效的密钥.

编辑:即将提交yesql的错误,但它已经修复了最近发布的0.5.2版本.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读