背景

  • Ubuntu 18.04
  • Docker中的
  • Postgresql 11.2
  • pgAdmin4 3.5

  • 有一个名为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 来增加更多值时,如第一幅图中所示,第二幅图中出现了错误,这表明参数格式不能混合使用:

    postgresql - pgAdmin参数格式不能混用-LMLPHP

    postgresql - pgAdmin参数格式不能混用-LMLPHP

    好吧,事实证明,如果在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服务,以使更改生效。

    09-12 03:29