QT 5.15通过QODBC连接Postgres 9.6时如何禁用日志文件生成?
问题描述
基于Linux平台的QT 5.15应用,通过QSqlDatabase使用QODBC驱动连接Postgres 9.6数据库时,应用目录下会自动生成名为app-process-id.log的日志文件,日志内容如下:
conn=0x78be4c043a50, PGAPI_DriverConnect( in)='DRIVER={psqlodbcw.so};Server=localhost;Port=5432;Database=TEST_DB;Uid=postgres;Pwd=1;Debug=0;FileUsage=1;Trace=0;CommLog=0;MyLog=0;', fDriverCompletion=0
修改Postgres配置文件无法解决该问题,怀疑日志由ODBC驱动生成,需要禁用该日志文件的生成。
解决方法
调整ODBC连接字符串参数
该日志由PostgreSQL ODBC驱动的FileUsage参数控制,当前连接字符串中FileUsage=1会触发驱动生成相关文件。将其修改为FileUsage=0即可禁用该日志:DRIVER={psqlodbcw.so};Server=localhost;Port=5432;Database=TEST_DB;Uid=postgres;Pwd=1;Debug=0;FileUsage=0;Trace=0;CommLog=0;MyLog=0;设置环境变量强制禁用
如果调整连接字符串后仍生效,可通过设置环境变量PGODBC_NO_FILE_USAGE=1强制驱动关闭文件使用功能。可以在启动应用前执行:export PGODBC_NO_FILE_USAGE=1 ./你的QT应用程序名或者将该环境变量添加到应用的启动脚本中。
检查驱动版本
若上述方法无效,可能是使用的psqlodbcw.so版本存在参数兼容问题,建议升级到与Postgres 9.6匹配的最新ODBC驱动版本(注意保持版本兼容性)。
内容的提问来源于stack exchange,提问作者Sergey
相关产品推荐
相关产品推荐

