You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL libpq PQconnectdb数据库名称大小写连接问题求助

问题原因与解决建议

核心原因

PostgreSQL的SQL解析器处理未加引号的标识符时,会自动将其转换为全小写存储;但libpq的PQconnectdb函数不会对连接参数中的数据库名做自动小写转换,而是直接将你传入的原始字符串作为数据库名进行查找。你创建的数据库实际是testdatabase(全小写),但连接时传入的是TestDatabase(带大写),自然找不到匹配的数据库。

解决方法

  • 直接在conninfo中使用全小写的数据库名:
    const char *conninfo = "dbname=testdatabase"; // 其他连接参数按需添加
    PGconn *conn = PQconnectdb(conninfo);
    
  • 若因特殊需求必须保留大写形式(仅适用于创建数据库时加了双引号的场景),可给数据库名加上双引号:
    const char *conninfo = "dbname=\"TestDatabase\"";
    PGconn *conn = PQconnectdb(conninfo);
    
    注意:你当前创建的数据库是无引号的testdatabase,此方法对你的场景无效,仅作扩展说明。

验证方式

用psql命令行工具可以快速验证这个行为:

  • 执行psql -d TestDatabase会和libpq一样报错,因为传入的是原始大写名称
  • 执行psql -d testdatabase则能成功连接,和预期一致

内容的提问来源于stack exchange,提问作者Tomaso Tosolini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 05:50:27