连接参数参考
info参数连接的所有属性名称对大小写敏感。常用的属性如表1所示。
属性名称 | 属性说明 | 属性值 |
|---|---|---|
PGDBNAME | 表示数据库名称(url中无需配置该参数,自动从Properties文件中解析)。 | 属性类型:String |
PGHOST | 主机IP地址(url中无需配置该参数,自动从Properties文件中解析),同时支持IPv4和IPv6。若配置多个CN,它们的IP和端口用“:”分隔,并作为整体以逗号分隔其他CN。 | 属性类型:String |
PGPORT | 主机端口号(url中无需配置该参数,自动从Properties文件中解析)。 | 属性类型:Integer |
user | 表示创建连接的数据库用户。 | 属性类型:String |
password | 表示数据库用户的密码。 | 属性类型:String |
driverInfoMode | 控制驱动描述信息的输出模式。 | 属性类型:String 取值范围:postgresql、gaussdb。
默认值:postgresql |
enable_ce | 表示密态等值查询的能力。 | 属性类型:Integer 取值范围:
默认值:该属性不设置则为空,表示不支持密态等值查询。 |
refreshClientEncryption | 指定密态数据库是否支持客户端缓存刷新。 | 属性类型:String 取值范围:
默认值:NULL |
loggerLevel | 指定日志记录级别。 | 属性类型:String 取值范围:目前支持4种级别(不区分大小写):OFF、INFO、DEBUG、TRACE。
默认值:该属性不设置则为空,与设置为INFO等效。 |
loggerFile | 用于指定日志输出路径(目录和文件名)。一般要求明确指定日志目录和文件名。 若只指定文件名,未指定目录则日志生成在客户端运行程序目录;若不配置或配置的路径不存在,则日志会默认通过流输出。此参数已废弃,不再生效,如需使用可通过java.util.logging属性文件或系统属性进行配置。 | 属性类型:String |
logger | 表示JDBC Driver要使用的日志输出框架。JDBC Driver支持对接用户应用程序使用的日志输出框架。目前支持的第三方日志输出框架只有基于Slf4j-API的日志框架。具体使用方式请参见日志管理。 | 属性类型:String 取值范围:Slf4JLogger、JdkLogger
|
allowEncodingChanges | 设置该参数值为true进行字符集类型更改,配合参数characterEncoding设置字符集,二者使用“&”分隔。例:allowEncodingChanges=true&characterEncoding=UTF8。 | 属性类型:Boolean 取值范围:
默认值:false |
characterEncoding | 需要配合allowEncodingChanges使用,allowEncodingChanges为false的情况下,characterEncoding仅允许设置为UTF8;allowEncodingChanges为true的情况下,characterEncoding可在取值范围内进行设置。 | 属性类型:String 取值范围:UTF8、GBK、LATIN1、GB18030 说明: 当连接到字符集为GB18030_2022的数据库时,characterEncoding设置为GB18030_2022不生效,会默认使用UTF8,需要设置为GB18030才能正常解析服务端的GB18030_2022字符。 默认值:UTF8 |
currentSchema | 设置当前连接的schema,在search-path(搜索路径)中指定要设置的schema。如果schema名包含除字母、数字、下划线之外的特殊字符,需要在schema名上加引号,注意加引号后schema名大小写敏感。如需配置多个schema,要用逗号“,”进行分隔。 例如:currentSchema=schema_a,"schema-b","schema/c" | 属性类型:String 缺省:如果未设置,则默认schema为连接使用的用户名。 |
loadBalanceHosts | 指定是否使用负载均衡功能。 | 属性类型:Boolean 取值范围:
默认值:false |
autoBalance | 指定负载均衡的策略。 须知:
| 属性类型:String 取值范围:
默认值:false |
获取CN列表的缓存有效时间。JDBC在建立连接时会检测数据库集群中CN状态,在refreshCNIpListTime时间内可信。超过则状态失效,下次建立连接时再次获取可用CN的IP列表。 | 属性类型:Integer 属性单位:s 取值范围:1 ~ 9999 默认值:10 建议:根据业务需要进行调整,需要配合autoBalance进行使用。 | |
hostRecheckSeconds | JDBC尝试连接主机后会保存主机状态:连接成功或连接失败。在hostRecheckSeconds时间内保持可信,超过则状态失效。 | 属性类型:Integer 属性单位:s 取值范围:0 ~ 2147483647 默认值:10 |
ssl | 表示以SSL方式连接数据库。包括NonValidatingFactory通道和使用证书的2种SSL连接方式。 | 属性类型:Boolean 取值范围:
默认值:该属性不设置则为空,与false等效。 |
sslmode | SSL认证方式。 | 属性类型:String 取值范围:disable、allow、prefer、require、verify-ca、verify-full。
默认值:该属性不设置则为空,与require等效。 |
sslcert | 提供客户端证书文件的完整路径。证书类型为End Entity。 | 属性类型:String 默认值:该属性不设置则为空,读取用户根目录。 |
sslkey | 提供密钥文件的完整路径,使用时需将该密钥转换为DER格式。 openssl pkcs8 -topk8 -outform DER -in client.key -out client.key.pk8 -nocrypt | 属性类型:String 默认值:该属性不设置则为空,读取用户根目录。 |
sslrootcert | SSL根证书的文件名。根证书的类型为CA。 | 属性类型:String 默认值:该属性不设置则为空,读取用户根目录。 |
sslpassword | SSL密码,提供给ConsoleCallbackHandler使用。 | 属性类型:String |
sslpasswordcallback | SSL密码提供者的类名。 | 属性类型:String 默认值:com.huawei.opengauss.jdbc.ssl.jdbc4.LibPQFactory.ConsoleCallbackHandler |
sslfactory | 指定SSLSocketFactory在建立SSL连接时用的类名。 | 属性类型:String 默认值:该属性不设置则为空。 |
sslprivatekeyfactory | 指定实现私钥解密方法的接口com.huawei.opengauss.jdbc.ssl.PrivateKeyFactory的实现类的完整限定类名。如果不提供,首先尝试默认的jdk私钥解密算法,如果无法解密,则使用com.huawei.opengauss.jdbc.ssl.BouncyCastlePrivateKeyFactory,用户需要提供bcpkix-jdk15on.jar包,版本建议1.65以上。 | 属性类型:String 默认值:该属性不设置则为空,会尝试使用默认的jdk私钥解密算法进行解密。 |
sslfactoryarg | 此值是sslfactory类的构造函数的可选参数(不推荐使用)。 | 属性类型:String 默认值:该属性不设置则为空。 |
sslhostnameverifier | 主机名验证程序的类名。接口实现javax.net.ssl.HostnameVerifier,默认使用org.postgresql.ssl.PGjdbcHostnameVerifier。 | 属性类型:String 默认值:该属性不设置则为空,默认使用org.postgresql.ssl.PGjdbcHostnameVerifier。 |
loginTimeout | 指建立数据库连接的等待时间。当url配置多IP时,若获取连接花费的时间超过此值,则连接失败,不再尝试后续IP。 loginTimeout时间包括connectTimeout和socketTimeoutInConnecting,计算方式为:loginTimeout=(connectTimeout+连接认证时间+初始化语句执行时间)*节点数量。 须知:
| 属性类型:Integer 属性单位:s(秒) 取值范围:0 ~ 2147483647。0表示已禁用,timeout不生效。 默认值:0 建议:配置后每次建立连接都会开启一个异步线程,在连接数较多的情况可能会导致客户端压力增大,可以根据业务酌情调整此参数,建议调整为max(connectTimeout, socketTimeoutInConnecting) * 节点数,防止在网络异常情况且第n个IP为主的情况下无法连接。 |
用于连接服务器操作系统的超时值。如果连接到服务器操作系统花费的时间超过此值,则连接断开。当url配置多IP时,表示连接单个IP的超时时间。 | 属性类型:Integer 属性单位:s(秒) 取值范围:0 ~ 2147483647。0表示已禁用,timeout不生效。 默认值:0 | |
socketTimeout | 用于socket读取操作的超时值。如果从服务器读取数据流所花费的时间超过此值,则连接关闭。如果不配置该参数,在数据库进程异常情况下,会导致客户端出现长时间等待,建议根据业务可以接受的SQL执行时间进行配置。 | 属性类型:Integer 属性单位:s(秒) 取值范围:0 ~ 2147483647。0表示已禁用,timeout不生效。 默认值:0 |
用于控制建立连接阶段socket读取操作的超时值。在建立连接阶段,如果从服务器读取数据流超过此阈值,则尝试查找下一个节点建立连接。 | 属性类型:Integer 属性单位:s(秒) 取值范围:0 ~ 2147483647。0表示已禁用,timeout不生效。 默认值:5 | |
statementTimeout | 用于控制connection中statement执行时间的超时值。如果statement执行时间超过此值,则取消该statement执行。 | 属性类型:Integer 属性单位:ms(毫秒) 取值范围:0 ~ 2147483647。0表示已禁用,timeout不生效。 默认值:0 |
cancelSignalTimeout | 发送取消命令的消息本身可能会阻塞,用于控制取消命令的“connect超时”和“socket超时”。如果取消命令超过指定时间未响应,会中断该连接,减少占用客户端资源。 | 属性类型:Integer 属性单位:s(秒) 取值范围:0 ~ 2147483647。0表示已禁用,timeout不生效。 默认值:10 |
tcpKeepAlive | TCP保活探测功能的控制开关。 | 属性类型:Boolean 取值范围:
默认值:false |
logUnclosedConnections | 客户端可能由于未调用Connection对象的close()方法而泄漏Connection对象。最终这些对象将被回收,并且调用finalize()方法。 | 属性类型:Boolean 取值范围:
默认值:false |
assumeMinServerVersion | 该参数设置要连接的服务器版本。 如assumeMinServerVersion高于或者等于9.0,可以在建立连接时减少相关包的发送,客户端不会发送请求将float精度设置为3(即维持原来设置的float精度2)。 | 属性类型:String 默认值:该属性不设置则为空。 |
ApplicationName | 表示正在连接的JDBC驱动名称。在CN上查询PGXC_STAT_ACTIVITY系统视图可以看到正在连接的客户端信息,application_name字段表示JDBC驱动名称。 | 属性类型:String 默认值:PostgreSQL JDBC Driver |
connectionExtraInfo | 表示驱动是否将当前驱动的部署路径、进程属主用户、url连接配置信息上报到数据库。 | 属性类型:Boolean 取值范围:
默认值:false |
autosave | 如果查询失败,指定驱动程序应该执行的操作。 | 属性类型:String 取值范围:always、never、conservative。
默认值:never |
protocolVersion | 连接协议版本号。 | 属性类型:Integer 取值范围:目前仅支持1和3。
默认值:该属性不设置则为空,与设置为3等效。 |
prepareThreshold | 该值决定PreparedStatement对象在执行多少次以后使用服务端已经解析好的statement。 说明: 不建议通过JDBC,并且使用prepareStatement方法执行涉及密码的语句(例如:CREATE USER user_name WITH PASSWORD '********';),原因是执行达到prepareThreshold指定次数时,数据库将SQL语句进行缓存,基于安全因素不会将密码进行缓存,该prepareStatement方法再次执行时会报错“Password must contain at least 8 characters.”。 | 属性类型:Integer 取值范围:0 ~ 2147483647 默认值:5。意味着在执行同一个PreparedStatement对象时,在第五次及以上执行时不再向服务端发送parse消息对statement进行解析,而使用之前在服务端已经解析好的statement。 |
preparedStatementCacheQueries | 确定每个连接中缓存PreparedStatement对象所生成query的最大数量。 | 属性类型:Integer 取值范围:0 ~ 2147483647。0表示禁用缓存。 默认值:256。若在prepareStatement()调用中使用超过256个不同的查询,则最近最少使用的查询缓存将被丢弃。 建议:根据业务需要进行调整。配合prepareThreshold使用。 |
preparedStatementCacheSizeMiB | 确定每个连接中缓存PreparedStatement对象所生成query的最大值。 | 属性类型:Integer 属性单位:MB 取值范围:0 ~ 2147483647。0表示禁用缓存。 默认值:5。若缓存了超过5MB的query,则最近最少使用的查询缓存将被丢弃。 |
databaseMetadataCacheFields | 指定每个连接可缓存的字段的最大个数。 | 属性类型:Integer 取值范围:0 ~ 2147483647。0表示禁用缓存。 默认值:65536 |
databaseMetadataCacheFieldsMiB | 指定每个连接可缓存的字段的最大值。 | 属性类型:Integer 属性单位:MB 取值范围:0 ~ 2147483647。0表示禁用缓存。 默认值:5 |
stringtype | 指定调用java.sql.PreparedStatement#setString方法时传给数据库的参数类型。 | 属性类型:String 取值范围:unspecified、varchar。
默认值:varchar |
batchMode | 表示是否使用batch模式连接。 说明: 配置batchMode=on时,执行批量插入/批量修改操作,每一列的数据类型以第一条数据指定的类型为准,若数据类型混用可能会导致报错或者插入的数据异常。 | 属性类型:String 取值范围:
默认值:on 建议:如果本身业务框架(例如hibernate)在批量更新时会检测返回值,可以通过调整此参数来解决。 |
fetchsize | 设置数据库连接所创建statement的默认fetchsize。 确定一次fetch在ResultSet中读取的行数,与defaultRowFetchSize功能等价。如果fetchsize和defaultRowFetchSize同时设置,以fetchsize为准。 | 属性类型:Integer 取值范围:0 ~ 2147483647 默认值:0。表示一次从数据库获取所有结果。 建议:用户根据自身的业务查询数据数量和客户端机器内存情况来配置此参数,设置fetchsize时要关闭自动提交模式(autocommit=false),否则会导致fetchsize无法生效。 |
defaultRowFetchSize | 确定一次fetch在ResultSet中读取的行数。限制每次访问数据库时读取的行数可以避免不必要的内存消耗,从而避免OutOfMemoryException。 | 属性类型:Integer 取值范围:0 ~ 2147483647 默认值:0。表示一次从数据库获取所有结果。 |
reWriteBatchedInserts | 表示批量插入时,是否重写SQL语句。使用该参数时,要求设置batchMode=off。 | 属性类型:Boolean 取值范围:
默认值:false |
unknownLength | 某些GaussDB类型(例如TEXT)没有明确定义的长度,当通过ResultSetMetaData.getColumnDisplaySize和ResultSetMetaData.getPrecision等函数返回关于这些类型的数据时,此参数指定未知长度类型的长度。 | 属性类型:Integer 取值范围:0 ~ 2147483647 默认值:2147483647 |
binaryTransfer | 是否启用二进制格式发送和接收数据。 | 属性类型:Boolean 取值范围:
默认值:false |
binaryTransferEnable | 启用二进制传输的类型列表。以逗号分隔,例如:binaryTransferEnable=Integer4_ARRAY,Integer8_ARRAY。 OID名称和编号二选一。比如:OID名称为BLOB,编号为88,可以进行如下配置:binaryTransferEnable=BLOB或binaryTransferEnable=88。 | 属性类型:String 默认值:该属性不设置则为空。 |
binaryTransferDisable | 禁用二进制传输的类型列表。以逗号分隔,OID名称和编号二选一。如果binaryTransferDisable与binaryTransferEnable有相同的value,则会禁用。 | 属性类型:String 默认值:该属性不设置则为空。 |
blobMode | 设置setBinaryStream()方法为不同类型的数据赋值。建议从ORA、MYSQL迁移的系统将该值设定为on,从PG迁移的系统设定为off。 | 属性类型:String 取值范围:
默认值:on |
socketFactory | 创建与服务器socket连接的类的名称。该类必须实现接口“javax.net.SocketFactory”,并定义无参或单String参数的构造函数。 | 属性类型:String |
socketFactoryArg | 此值是上面提供的socketFactory类的构造函数的可选参数,不推荐使用。 | 属性类型:String |
receiveBufferSize | 该值用于设置连接流上的SO_RCVBUF。 | 属性类型:Integer 属性单位:字节 取值范围:-1 ~ 2147483647 默认值:-1。表示不设置缓冲区大小。 |
sendBufferSize | 该值用于设置连接流上的SO_SNDBUF。 | 属性类型:Integer 属性单位:字节 取值范围:-1 ~ 2147483647 默认值:-1。表示不设置缓冲区大小。 |
preferQueryMode | 指定执行查询的模式。 | 属性类型:String 取值范围:simple、extended、 extendedForPrepared、extendedCacheEverything。
默认值:extended |
ApplicationType | 设置是否开启分布式写入和查询。该项设置只有数据库处于gtm free场景的情况下才会有效。 | 属性类型:String 取值范围:not_perfect_sharding_type、perfect_sharding_type
默认值:not_perfect_sharding_type |
priorityServers | 指定url上配置的前n个节点作为主集群被优先连接。应用于流式容灾场景。 例如:jdbc:postgresql://host1:port1,host2:port2,host3:port3,host4:port4/database?priorityServers=2。即表示host1与host2为主集群节点,host3与host4为容灾集群节点。 | 属性类型:Integer 取值范围:大于0且小于url上配置的CN数量。 默认值:NULL |
usingEip | 指定是否使用内网地址实现负载均衡。 须知: 当usingEip=true时,url中的host需使用内网地址;当usingEip=false时,url中的host需使用数据IP,否则会导致priorityn和shufflen负载均衡策略失效。 | 属性类型:Boolean 取值范围:
默认值:true |
traceInterfaceClass | 获取traceId方法接口org.postgresql.log.Tracer的实现类的完整限定类名。 | 属性类型:String 默认值:NULL |
use_boolean | 设置extended模式下setBoolean()方法绑定的oid类型。 | 属性类型:Boolean 取值范围:
默认值:false |
allowReadOnly | 设置是否允许连接开启只读模式。 | 属性类型:Boolean 取值范围:
默认值:true |
TLSCiphersSupperted | 设置支持的TLS加密套件。 | 属性类型:String 默认值:TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 |
stripTrailingZeros | 设置是否去除numeric类型小数点后的0,仅对ResultSet.getObject(int columnIndex)生效。 | 属性类型:Boolean 取值范围:
默认值:false |
enableTimeZone | 指定是否启用客户端时区设置。 | 属性类型:Boolean 取值范围:
默认值:true |
enableStandbyRead | 指定是否开启备机读模式。 | 属性类型:Boolean 取值范围:
默认值:false |
oracleCompatible | 用户控制驱动接口的ORA兼容特性。 | 属性类型:String 取值范围: 默认值:false |
printSqlInLog | 指定异常信息或日志中是否输出SQL语句。 | 属性类型:Boolean 取值范围:
默认值:true |
setFloat | 表示调用setFloat或者setObject指定类型为float时,传递给内核的Oid是否为float4的Oid。 | 属性类型:Boolean 取值范围: true:表示传递给内核的Oid为float4。 false:表示传递给内核的Oid为float8。 默认值:false |
JDBC驱动支持数据库DDL操作修改表结构后正常执行。
jdbc.version_num仅用来在建立连接时向内核传递JDBC版本号,不做其他用途,请勿使用。jdbc.version_num从503.1版本开始支持(此前使用jdbc.version参数完成该功能,后续废弃),jdbc.version_num使用规范如下:
jdbc.version_num | 版本 | 范围 | 使用规则 | 内核判断 | 备注 |
|---|---|---|---|---|---|
502xx | 505.2 | 50200-50299 | 版本内必须先使用最小可用值 | 版本号>=502xx(最新设置值) | 相关兼容性改动必须同步合入更高版本分支 |
501xx | 505.1 | 50100-50199 | 版本内必须先使用最小可用值 | 版本号>=501xx(最新设置值) | 相关兼容性改动必须同步合入更高版本分支 |
500xx | 505.0 | 50000-50099 | 版本内必须先使用最小可用值 | 版本号>=500xx(最新设置值) | 相关兼容性改动必须同步合入更高版本分支 |
301xx | 503.1 | 30100-30199 | 版本内必须先使用最小可用值 | 版本号>=301xx(最新设置值) | 相关兼容性改动必须同步合入更高版本分支 |
300xx | 503.0 | 30000-30099 | 版本内必须先使用最小可用值 | 版本号>=300xx(最新设置值) | 相关兼容性改动必须同步合入更高版本分支 |

