当前位置: 首页 > news >正文

DuckDB 的postgresql插件无法访问GooseDB

GooseDB使用DuckDB后台,支持postgresql协议前端访问,但是它无法用DuckDB 的postgresql插件访问。

操作步骤如下

C:\d\goosedb>goosedb14 start
{"level":"info","msg":"===== GooseDB Freeware(For Non-Commercial Use Only) [read_write] ===== valid until: 2027-10-01 08:00:00 +0800 CST, owner: AnyBody =====","time":"2025-10-01T20:42:13+08:00"}
{"level":"info","msg":"MaxConnections = 10","time":"2025-10-01T20:42:13+08:00"}
{"level":"info","msg":"DuckDB !!read_write!! Mode)","time":"2025-10-01T20:42:13+08:00"}
{"level":"info","msg":"SET ieee_floating_point_ops = false","time":"2025-10-01T20:42:13+08:00"}
{"level":"info","msg":"SET autoload_known_extensions=1","time":"2025-10-01T20:42:13+08:00"}
{"level":"info","msg":"SET preserve_insertion_order = false","time":"2025-10-01T20:42:13+08:00"}
{"level":"info","msg":"ATTACH ':memory:' as memdb","time":"2025-10-01T20:42:13+08:00"}
{"level":"info","msg":"LOAD parquet","time":"2025-10-01T20:42:13+08:00"}
{"level":"info","msg":"LOAD json","time":"2025-10-01T20:42:13+08:00"}
{"level":"info","msg":"GooseDB v1.4.0.0 (DuckDB v1.4.0) build_date:2025-09-29","time":"2025-10-01T20:42:13+08:00"}
{"level":"info","msg":"goosedb listening on 0.0.0.0:1234","time":"2025-10-01T20:42:13+08:00"}
{"level":"info","msg":"restapi listening on 0.0.0.0:5678","time":"2025-10-01T20:42:13+08:00"}
{"level":"info","msg":"db-file: data\\goosedb.ddb, cfg-file: conf\\goosedb.cfg","time":"2025-10-01T20:42:13+08:00"}

attach命令不报错,但use该数据库出错。

C:\d>duckdb140
DuckDB v1.4.0 (Andium) b8a06e4a22
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
D load postgres;
100% ▕██████████████████████████████████████▏ (00:02:38.35 elapsed)
D ATTACH 'dbname=goosedb user=gooseadmin host=127.0.0.1 port=1234' AS goosedb (TYPE postgres);
IO Error:
Unable to connect to Postgres at dbname=goosedb user=gooseadmin host=127.0.0.1 port=1234: connection to server at "127.0.0.1", port 1234 failed: fe_sendauth: no password suppliedD ATTACH 'dbname=goosedb user=gooseadmin host=127.0.0.1 port=1234 password=000000' AS goosedb (TYPE postgres);
D use goosedb;
Invalid Error:
Failed to execute query "BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ;SELECT oid, nspname
FROM pg_namespaceORDER BY oid;SELECT pg_namespace.oid AS namespace_id, relname, relpages, attname,pg_type.typname type_name, atttypmod type_modifier, pg_attribute.attndims ndim,attnum, pg_attribute.attnotnull AS notnull, NULL constraint_id,NULL constraint_type, NULL constraint_key
FROM pg_class
JOIN pg_namespace ON relnamespace = pg_namespace.oid
JOIN pg_attribute ON pg_class.oid=pg_attribute.attrelid
JOIN pg_type ON atttypid=pg_type.oid
WHERE attnum > 0 AND relkind IN ('r', 'v', 'm', 'f', 'p')
UNION ALL
SELECT pg_namespace.oid AS namespace_id, relname, NULL relpages, NULL attname, NULL type_name,NULL type_modifier, NULL ndim, NULL attnum, NULL AS notnull,pg_constraint.oid AS constraint_id, contype AS constraint_type,conkey AS constraint_key
FROM pg_class
JOIN pg_namespace ON relnamespace = pg_namespace.oid
JOIN pg_constraint ON (pg_class.oid=pg_constraint.conrelid)
WHERE relkind IN ('r', 'v', 'm', 'f', 'p') AND contype IN ('p', 'u')
ORDER BY namespace_id, relname, attnum, constraint_id;SELECT 0 AS oid, 0 AS enumtypid, '' AS typname, '' AS enumlabel
LIMIT 0;SELECT n.oid, t.typrelid AS id, t.typname as type, pg_attribute.attname, sub_type.typname
FROM pg_type t
JOIN pg_catalog.pg_namespace n ON n.oid = t.typnamespace
JOIN pg_class ON pg_class.oid = t.typrelid
JOIN pg_attribute ON attrelid=t.typrelid
JOIN pg_type sub_type ON (pg_attribute.atttypid=sub_type.oid)
WHERE pg_class.relkind = 'c'
AND t.typtype='c'ORDER BY n.oid, t.oid, attrelid, attnum;SELECT pg_namespace.oid, tablename, indexname
FROM pg_indexes
JOIN pg_namespace ON (schemaname=nspname)ORDER BY pg_namespace.oid;
": ERROR:  [QUERY] Multiple statements not allowed!D .exit

用psql工具可以访问表,但有些命令也不支持。DuckDB访问表出现use同样的错误。

C:\d>\d\pg18\bin\psql -h 127.0.0.1 -U gooseadmin -d goosedb -p 1234
用户 gooseadmin 的口令:psql (18beta1, 服务器 16.10)
输入 "help" 来获取帮助信息.goosedb=> \dt
ERROR:  [QUERY] ERROR: Catalog Error: Scalar Function with name pg_get_userbyid does not exist!
Did you mean "pg_get_expr"?LINE 4:   pg_catalog.pg_get_userbyid(c.relowner) as "Owner"^
goosedb=> select * from t2;ts            | a
-------------------------+---2025-09-14 08:18:39.386 | 12025-09-14 08:20:17.458 | 22025-09-14 08:21:37.85  | 32025-09-14 08:21:37.85  | 42025-09-14 08:51:16.755 | 52025-09-14 08:51:16.755 | 5
(6 行记录)goosedb=> \qC:\d>duckdb140
DuckDB v1.4.0 (Andium) b8a06e4a22
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
D load postgres;
D ATTACH 'dbname=goosedb user=gooseadmin host=127.0.0.1 port=1234 password=000000' AS goosedb (TYPE postgres);
D from goosedb.t2;
Invalid Error:
Failed to execute query "BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ;
...": ERROR:  [QUERY] Multiple statements not allowed!

两种操作都引发Multiple statements not allowed!错误。应该是DuckDB 的postgresql插件使用了goosedb不支持的命令引起的。用psql分别执行上述语句,第一句会出错,下面的几句都能执行。

C:\d>\d\pg18\bin\psql -h 127.0.0.1 -U gooseadmin -d goosedb -p 1234
用户 gooseadmin 的口令:psql (18beta1, 服务器 16.10)
输入 "help" 来获取帮助信息.goosedb=> BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ;
ERROR:  [QUERY] Parser Error: syntax error at or near "ISOLATION"LINE 1: BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ^
goosedb=> BEGIN TRANSACTION;
BEGIN
goosedb=*> SELECT pg_namespace.oid AS namespace_id, relname, relpages, attname,
goosedb-*>     pg_type.typname type_name, atttypmod type_modifier, pg_attribute.attndims ndim,
goosedb-*>     attnum, pg_attribute.attnotnull AS notnull, NULL constraint_id,
goosedb-*>     NULL constraint_type, NULL constraint_key
goosedb-*> FROM pg_class
goosedb-*> JOIN pg_namespace ON relnamespace = pg_namespace.oid
goosedb-*> JOIN pg_attribute ON pg_class.oid=pg_attribute.attrelid
goosedb-*> JOIN pg_type ON atttypid=pg_type.oid
goosedb-*> WHERE attnum > 0 AND relkind IN ('r', 'v', 'm', 'f', 'p')
goosedb-*> UNION ALL
goosedb-*> SELECT pg_namespace.oid AS namespace_id, relname, NULL relpages, NULL attname, NULL type_name,
goosedb-*>     NULL type_modifier, NULL ndim, NULL attnum, NULL AS notnull,
goosedb-*>     pg_constraint.oid AS constraint_id, contype AS constraint_type,
goosedb-*>     conkey AS constraint_key
goosedb-*> FROM pg_class
goosedb-*> JOIN pg_namespace ON relnamespace = pg_namespace.oid
goosedb-*> JOIN pg_constraint ON (pg_class.oid=pg_constraint.conrelid)
goosedb-*> WHERE relkind IN ('r', 'v', 'm', 'f', 'p') AND contype IN ('p', 'u')
goosedb-*> ORDER BY namespace_id, relname, attnum, constraint_id;namespace_id |    relname    | relpages | attname | type_name | type_modifier | ndim | attnum | notnull | constraint_id | constraint_type | constraint_key
--------------+---------------+----------+---------+-----------+---------------+------+--------+---------+---------------+-----------------+----------------2444 | postgres_type |          |         |           |               |      |        |         |    2545000000 | p               | {0}2444 | postgres_type |          |         |           |               |      |        |         |    2545000001 | u               | {1}
(2 行记录)goosedb=*> SELECT 0 AS oid, 0 AS enumtypid, '' AS typname, '' AS enumlabel
goosedb-*> LIMIT 0;oid | enumtypid | typname | enumlabel
-----+-----------+---------+-----------
(0 行记录)goosedb=*> SELECT n.oid, t.typrelid AS id, t.typname as type, pg_attribute.attname, sub_type.typname
goosedb-*> FROM pg_type t
goosedb-*> JOIN pg_catalog.pg_namespace n ON n.oid = t.typnamespace
goosedb-*> JOIN pg_class ON pg_class.oid = t.typrelid
goosedb-*> JOIN pg_attribute ON attrelid=t.typrelid
goosedb-*> JOIN pg_type sub_type ON (pg_attribute.atttypid=sub_type.oid)
goosedb-*> WHERE pg_class.relkind = 'c'
goosedb-*> AND t.typtype='c'
goosedb-*>
goosedb-*> ORDER BY n.oid, t.oid, attrelid, attnum;oid | id | type | attname | typname
-----+----+------+---------+---------
(0 行记录)goosedb=!> end;
ROLLBACK
goosedb=> SELECT pg_namespace.oid, tablename, indexname
goosedb-> FROM pg_indexes
goosedb-> JOIN pg_namespace ON (schemaname=nspname)
goosedb->
goosedb-> ORDER BY pg_namespace.oid;oid | tablename | indexname
-----+-----------+-----------
(0 行记录)
http://www.dtcms.com/a/430586.html

相关文章:

  • 电子商务软件网站建设的核心网站布局模板
  • 从Nginx到Keepalived:反向代理高可用的技术闭环——Nginx、Keepalived、VIP与VRRP的深度联动解析
  • 现场运维指南
  • 查看和修改Linux的主机名称
  • Vmware虚拟机联网问题,显示:线缆已拔出!!!
  • 部署Nginx(Kylinv10sp3、Ubuntu2204、Rocky9.3)
  • 【含文档+PPT+源码】基于微信小程序的房屋租赁系统
  • GitHub 热榜项目 - 日榜(2025-10-01)
  • linux的文件和目录操作函数
  • 网站首页psdwordpress禁用修订
  • Coze源码分析-资源库-编辑工作流-后端源码-领域/数据访问/基础设施层
  • 13个GNS3 3.0.5 appliances设备模板镜像合集:IOSv/L2,IOU L2/L3,以及IOS-XE
  • Java-Spring入门指南(十九)thymeleaf基本概念
  • GameObject 常见类型详解 -- 宝箱(CHEST)
  • GameObject 常见类型详解 -- 按钮(BUTTON)
  • 【SpringAI】第四弹:深入解析 Rag 检索增强工作流程、最佳实践和调优
  • 自助网站免费国外用tornado做的网站
  • 华为业务流程架构:主干清晰、末端灵活
  • 基于any2web+deepseek实现对三角函数定义的理解
  • 建个企业网站一年需要多少钱网站网页切换怎么做的
  • 《考研408数据结构》第三章(队列)复习笔记
  • 《C++进阶之C++11》【lambda表达式 + 包装器】
  • 【C++】栈、队列、双端队列、优先级队列、仿函数
  • 潢川手机网站建设做网站的图片=gif
  • Java 大视界 -- Java 大数据在智能安防视频监控系统中的视频语义理解与智能检索进阶
  • 图片转视频
  • AI 智能体在 2025 年面临的挑战
  • 做一元夺宝网站需要什么条件网页网站建设软件
  • 网站建设与维护的实训总结wordpress 自定义注册
  • 什么是RDMA?—— 一场网络通信的范式革命