下面是不同驱动的socket timeout配置方式。
connectTimeout
和socketTimeout
的默认值为0时,timeout不生效。- 除了调用DBCP的API以外,还可以通过properties属性进行配置。
JDBC Driver | connectTimeout配置项 | socketTimeout配置项 | url格式 | 示例 |
---|---|---|---|---|
MySQL Driver | connectTimeout(默认值:0,单位:ms) | socketTimeout(默认值:0,单位:ms) | jdbc:mysql://[host:port],[host:port]…/[database][?propertyName1][=propertyValue1][&propertyName2][=propertyValue2]… | jdbc:mysql://xxx.xx.xxx.xxx:3306/database?connectTimeout=60000&socketTimeout=60000 |
MS-SQL DriverjTDS Driver | loginTimeout(默认值:0,单位:s) | socketTimeout(默认值:0,单位:s) | jdbc:jtds:<server_type>://<server>[:<port>][/<database>][;<property>=<value>[;...]] | jdbc:jtds:sqlserver://server:port/database;loginTimeout=60;socketTimeout=60 |
Oracle Thin Driver | oracle.net.CONNECT_TIMEOUT (默认值:0,单位:ms) | oracle.jdbc.ReadTimeout(默认值:0,单位:ms) | 不支持通过url配置,只能通过OracleDatasource.setConnectionProperties() API设置,使用DBCP时可以调用BasicDatasource.setConnectionProperties()或BasicDatasource.addConnectionProperties()进行设置 | - |
CUBRID Thin Driver | 无独立配置项(默认值:5,000,单位:ms) | 无独立配置项(默认值:5,000,单位:ms) | - |
connectTimeout:表示的是数据库驱动(mysql-connector-java) 与 mysql服务器建立TCP连接的超时时间。属于TCP层面的超时。
socketTimeout:是通过TCP连接发送数据(要执行的sql)后,等待响应的超时时间。属于TCP层面的超时。
时区
1.设置为中国时区:
jdbc:mysql://localhost:3306/studysystem?serverTimezone=Asia/Shanghai
2.设置为世界标准时区,比北京时间慢八小时
jdbc:mysql://localhost:3306/studysystem?serverTimezone=UTC