更新时间:2026-07-28 GMT+08:00
分享

配置参数说明

本章节对odbc.ini文件配置参数进行详细说明,参见表1

表1 odbc.ini文件配置参数

参数

描述

示例

[DSN]

数据源的名称。

[gaussdb]

Driver

驱动名,对应odbcinst.ini中的DriverName。

Driver=GaussMPP

Servername

  • 服务器的IP地址。可配置多个IP地址或者多个域名。支持IPv4和IPv6。
    说明:

    如果使用域名可以配置Pqopt=enable_host_resolve=1打开域名解析,支持域名自动寻主。

Servername=127.0.0.1

Database

要连接的数据库的名称。

Database=db1

Username

数据库用户名称。

Username=omm

Password

数据库用户密码。

说明:

ODBC驱动本身已经对内存密码进行过清理,以保证用户密码在连接后不会再在内存中保留。

但是如果配置了此参数,由于UnixODBC对数据源文件等进行缓存,可能导致密码长期保留在内存中。

推荐在应用程序连接时,将密码传递给相应API,而非写在数据源配置文件中。同时连接成功后,应当及时清理保存密码的内存段。

须知:
配置文件中填写密码时,需要遵循http规则:
  1. 字符应当采用URL编码规范,如"!"应写作"%21","%"应写作"%25",因此应当特别注意字符。
  2. "+"会被替换为空格" "。

Password=********

Port

服务器的端口号。

Port=8000

Sslmode

是否启用 SSL 连接。

说明:

Sslmode的可用选项及其说明,请参见表表2

Sslmode=allow

Debug

控制调试模式的开启及日志输出级别。

取值范围:0 ~ INT_MAX

  • 设置为0时表示不启用调试模式。
  • 设置为大于0的值时将启用调试日志,会打印gsqlODBC驱动的mylog。日志生成目录为/tmp/,文件名为mylog_xxx.log。
  • 设置为1时表示仅输出FATAL级别日志。
  • 设置为2时表示输出FATAL和ERROR级别日志。
  • 设置为3时表示输出FATAL、ERROR和WARN级别日志。
  • 设置为4时表示输出FATAL、ERROR、WARN和INFO级别日志。
  • 设置为≥5时表示输出所有级别日志,增加输出TRACE级别日志。

默认值为0。

说明:
  1. FATAL:报告致命错误。
  2. ERROR:报告异常错误。
  3. WARN:报告警告信息。
  4. INFO:记录程序运行中的正常关键信息。
  5. TRACE:提供开发人员使用的调试信息。

Debug=5

CommLog

控制后端通信日志的开启及日志输出级别。

取值范围:0 ~ INT_MAX

  • 设置为0时表示不启用。
  • 设置为大于0的值时将启用后端日志,会打印gsqlODBC驱动的qlog。日志生成目录为/tmp/,文件名为gsqlodbc_xxx.log。
  • 设置为1时表示仅输出ERROR级别日志。
  • 设置为2时表示输出ERROR和INFO级别日志。
  • 设置为≥3时表示输出ERROR、INFO和TRACE级别日志。

默认值为0。

说明:
  1. ERROR:报告异常错误。
  2. INFO:记录程序运行中的正常关键信息。
  3. TRACE:提供开发人员使用的调试信息。

CommLog=1

UseServerSidePrepare

是否开启数据库端扩展查询协议。

取值范围:0,1

  • 取值为0表示不开启。
  • 取值为1表示开启。

默认值为1。

UseServerSidePrepare=1

UseBatchProtocol

是否开启批量查询协议(开启后可提升DML操作性能)。

取值范围:0,1

  • 取值为0时,不使用批量查询协议(主要用于与早期数据库版本通信兼容)。
  • 取值为1,且GUC参数support_batch_bind设置为on时,将打开批量查询协议。

默认值为1。

UseBatchProtocol=1

ForExtensionConnector

此开关控制着savepoint是否发送,savepoint相关问题可以注意此开关。

取值范围:0,1

  • 取值为0时表示发送savepoint。
  • 取值为1时表示不发送savepoint。

默认值为1。

ForExtensionConnector=1

ConnectionExtraInfo

GUC参数connection_info中显示驱动部署路径和进程属主用户的开关。

取值范围:0,1

  • 取值为0时表示不打开此开关。
  • 取值为1时表示打开此开关。

默认值为0。

说明:

当设置为1时,ODBC驱动会将当前驱动的部署路径、进程属主用户上报到数据库中,记录在GUC参数connection_info里,同时可以在《参考》中的“系统表和系统视图 > 系统视图 > 其他系统视图 > PG_STAT_ACTIVITY”中查询到。

ConnectionExtraInfo=1

BoolsAsChar

是否将布尔值作为字符处理。

取值范围:0,1

  • 取值为0时表示Bools值将会映射为SQL_BIT。
  • 取值为1时表示Bools值将会映射为SQL_CHAR。

默认值为1。

BoolsAsChar = 1

RowVersioning

是否在更新一行数据时,允许应用检测数据有没有被其他用户进行修改。

取值范围:0,1

  • 取值为0时表示不允许应用检测。
  • 取值为1时表示允许应用检测。

默认值为0。

RowVersioning=1

ShowSystemTables

指定是否将默认系统表视为普通SQL表。

取值范围:0,1

  • 取值为0时驱动不会将默认系统表视为普通SQL表。
  • 取值为1时驱动将默认系统表视为普通SQL表。

默认值为0。

ShowSystemTables=1

MaxCacheQueries

控制每个连接缓存的预编译语句个数。

取值范围:0 ~ 4096

默认值为0。

说明:

如果设置为0,则不开启客户端预编译语句缓存池。设置为大于4096的值会限制为4096。如果执行过的语句个数超过MaxCacheQueries设置的上限,则淘汰最近最少使用的语句。

MaxCacheQueries=128

MaxCacheSizeMiB

控制每个连接缓存的预编译语句总大小,在MaxCacheQueries大于0时生效。

取值范围:0 ~ 4096

默认值为1。

说明:

如果缓存的语句总长度大于MaxCacheSizeMiB则淘汰最近最少使用的语句。单位为MB,设置为大于4096的值会限制为4096。

MaxCacheSizeMiB=10

TcpUserTimeout

在支持TCP_USER_TIMEOUT套接字选项的操作系统上,指定传输的数据在TCP连接被强制关闭之前可以保持未确认状态的最大时长。

取值范围:0 ~ INT_MAX

默认值为0。

说明:

0表示使用系统缺省。通过Unix域套接字做的连接忽略这个参数。单位为毫秒。

TcpUserTimeout=5000

TargetServerType

设定连接的主机的类型。主机的类型和设定的值一致时才能连接成功。设置规则如下:

  • primary(默认值):仅对主备系统中的主节点进行连接。
  • standby:仅对主备系统中的备节点进行连接。
  • prefer-standby:首先尝试与主备系统中的备节点进行连接。如果与hosts列表的所有备节点都连接失败,则尝试any模式进行连接。
  • read-write:仅对可读写的主机进行连接。
  • read-only:仅对只读的主机进行连接。
  • any:可以对所有类型的主机进行连接。
  • cluster-primary:仅支持对主数据库主节点进行连接。
  • cluster-standby:仅支持对主数据库备节点进行连接。
  • cluster-mainnode:仅支持对主节点或首备节点(容灾主节点)进行连接。
    说明:

    cluster-primary、cluster-standby和cluster-mainnode选项仅支持流式容灾。

TargetServerType=primary

Pqopt

用于设置libpq连接参数,参数之间用空格间隔。libpq参数请参见连接参数说明

Pqopt=keepalives=0

KeepaliveTime

在TCP应该发送一个保持激活的信息给服务器之后,控制不活动的秒数。如果是通过Unix域套接字进行连接,或者禁用了“保持激活”功能,则该参数将被忽略。

取值范围:0 ~ INT_MAX

设置为0值或者不配置表示使用系统缺省。

说明:

禁用“保持激活”功能需要通过Pqopt参数设置keepalives=0。

KeepaliveTime=2

KeepaliveInterval

在TCP保持激活信息没有被应该传播的服务器承认之后,控制探活报文发送的间隔秒数。如果是通过 Unix 域套接字进行连接,或者禁用了“保持激活”功能,则该参数将被忽略。

取值范围:0 ~ INT_MAX

设置为0值或者不配置表示使用系统缺省。

KeepaliveInterval=2

KeepaliveCount

控制TCP发送保持激活信息的次数。如果是通过 Unix 域套接字进行连接,或者禁用了“保持激活”功能,则该参数将被忽略。

取值范围:0 ~ INT_MAX

设置为0值或者不配置表示使用系统缺省。

KeepaliveCount=2

SocketTimeout

用于控制客户端与服务端建立连接完全成功后的socket读写超时时间。单位为秒,默认为0。

说明:

该参数包含数据库语句执行的超时时间。设置过小可能导致正常执行超时,因此默认为0,建议根据实际场景配置非0值。

SocketTimeout=5

SocketTimeoutInConnect

用于控制TCP三次握手成功后,客户端与服务端建立连接阶段的socket读写超时时间。单位为秒,默认为5。

说明:

该参数与SocketTimeout的区别在于:由于三次握手成功后的客户端与服务端建立连接阶段可能存在阻塞,因此需要设置不影响语句执行超时的socket读写超时时间。

SocketTimeoutInConnect=5

CancelTimeout

用于控制应用端发送cancel消息的超时时间。

单位为秒,默认为0。

CancelTimeout=5

TcpSYNRetries

用于控制在TCP三次握手阶段时SYN的最大重传次数。超过该次数仍未建立连接,则会返回报错。

默认为0次。

说明:

该参数在支持TCP_SYNCNT套接字选项的操作系统上,指定客户端建立连接三次握手阶段SYN包发送失败而重传的次数。0值表示使用系统缺省。通过Unix域套接字的连接忽略这个参数。

TcpSYNRetries=3

TextAsLongVarchar

将数据库内核中的text类型映射为驱动侧的SQL_LONGVARCHAR类型或者SQL_VARCHAR类型。

取值范围:0,1。

  • 取值为0时表示将内核侧text类型映射为驱动侧的SQL_VARCHAR类型。
  • 取值为1时表示将内核侧text类型映射为驱动侧的SQL_LONGVARCHAR类型。

默认值为1。

TextAsLongVarchar=1

MaxLongVarcharSize

定义驱动侧的SQL_LONGVARCHAR类型的可支持最大长度。

取值范围:0 ~ INT_MAX。

默认值为8190。

MaxLongVarcharSize=8190

MaxVarcharSize

定义驱动侧的SQL_VARCHAR类型的可支持最大长度。

取值范围:0 ~ INT_MAX。

默认值为255。

MaxVarcharSize=255

EnableHostCache

是否开启节点缓存功能,0表示不开启,1表示开启。默认开启。

说明:

节点缓存在连接串配置单IP或者TargetServerType=any时不生效。

EnableHostCache=1

表2 Sslmode的可选项及其描述

Sslmode

是否会启用SSL加密

描述

disable

不使用SSL安全连接,为默认值。

allow

可能

如果数据库服务器要求使用,则可以使用SSL安全加密连接,但不验证数据库服务器的真实性。

prefer

可能

如果数据库支持SSL,则优先使用SSL安全加密连接,但不验证数据库服务器的真实性。

require

必须使用SSL安全连接,仅进行数据加密,不验证数据库服务器的真实性。

verify-ca

必须使用SSL安全连接,并且验证数据库是否具有可信证书机构签发的证书。

当前Windows ODBC不支持cert方式认证。

verify-full

必须使用SSL安全连接,在verify-ca的验证范围之外,同时验证数据库所在主机的主机名是否与证书内容一致。

GaussDB不支持此模式。

当前Windows ODBC不支持cert方式认证。

用户通过ODBC连接GaussDB服务器时,可以通过开启SSL加密客户端和服务器之间的通讯。在使用SSL时,默认用户已经获取了服务端和客户端所需要的证书和私钥文件,关于证书等文件的获取请参考Openssl相关文档和命令。

相关文档