背景
有一个名为alias的列,类型为
character varying[](64)
。在使用psycopg2
之前,已经在某些行上设置了值。那时一切都很好。SQL = 'UPDATE public."mytable" SET alias=%s WHERE id=%s'
query = cursor.mogrify(SQL, ([values] , id))
cursor.execute(query)
conn.commit()
最近,当我想使用pgAdmin GUI 来增加更多值时,如第一幅图中所示,第二幅图中出现了错误,这表明参数格式不能混合使用:
好吧,事实证明,如果在pgAdmin中使用 psql 或查询工具等脚本插入值,则不会发生错误,即仅在使用pgAdmin的 GUI 时才会发生。
示例脚本:
UPDATE public."mytable" SET alias='{a, b}' WHERE id='myid'
但是由于GUI修改值要容易得多,所以真的想弄清楚它。任何想法?
最佳答案
这是pgAdmin 4.17中的错误。
似乎只要您在表中编辑char(n)[]
或varchar(n)[]
单元格时都会发生(尽管char[]
和varchar[]
不受影响)。
应该是fixed in 4.18。
同时,您可以自己进行修复,而不会遇到太大麻烦。 pgAdmin4后端是用Python编写的,因此无需重建任何内容。您可以潜入并更改来源。
找到安装pgAdmin4的目录,然后在编辑器中打开web/pgadmin/tools/sqleditor/__init__.py
。找到这行:
typname = '%s(%s)[]'.format(
...并将其更改为:
typname = '{}({})[]'.format(
您需要重新启动pgAdmin4服务,以使更改生效。