这个项目能做什么

lib/pq 是一个与 Go 标准 database/sql 包集成的纯 Go PostgreSQL 驱动实现。它支持所有当前维护的 PostgreSQL 版本,并提供与 libpq 兼容的 DSN 格式,支持 key=value 和 postgres:// URL 风格的连接字符串。 主要功能包括: - 身份验证:开箱即用支持 PASSWORD、MD5 和 SCRAM-SHA256。可通过独立的 auth/kerberos 模块实现 GSS/Kerberos 身份验证,以避免不必要的依赖。同时支持 pgpass 文件。 - 批量导入:支持在事务内使用 COPY [...] FROM STDIN 进行高效的批量数据加载。 - LISTEN/NOTIFY:pq.Listener 类型可通过 Go 通道传递 PostgreSQL 通知,实现实时事件驱动模式。 - 错误处理:PostgreSQL 错误以包含结构化字段的 pq.Error 返回。pq.As 辅助函数可将错误转换为类型化的 pq.Error 值,ErrorWithDetail() 则包含用于调试的 DETAIL 和 CONTEXT 信息。 - NOTICE 处理:可通过可配置的回调处理程序捕获来自 PostgreSQL 的信息性 NOTICE 消息。 - 运行时参数:与 libpq 不同,pq 允许直接在连接字符串中设置 search_path 或 work_mem 等运行时参数。 - 配置结构:pq.Config 结构提供程序化的连接配置,pq.NewConfig 可解析 DSN 字符串,pq.NewConnectorConfig 可创建连接器。 README 中记录的注意事项包括:不支持 LastInsertId(请使用 INSERT ... RETURNING 代替);时间戳处理方面,timestamptz 使用服务器时区,而 timestamp without timezone 使用固定的零偏移时区;COPY 期间的 bytea 编码可能会导致 jsonb 列出现问题。 该项目包含一套全面的测试套件,可通过 Docker Compose 针对多个 PostgreSQL 版本、pgbouncer 和 pgpool 运行。设置环境变量 PQGO_DEBUG=1 可启用协议级调试输出以进行故障排查。