database - 在 Go 中为 SQL 连接设置 TCP 超时

标签 database go tcp connection

当我使用 VPN 连接到数据库(使用标准 go sql 库)并且 VPN 接口(interface)关闭时,当我尝试执行 SQL 查询时会有 75 秒的超时,无论接口(interface)是否同时打开。我想将此超时减少到某个合理的时间,这样我的应用程序就不会在这种情况下被卡住 75 秒。

db, err := sql.Open(driverName, dataSourceName)

是否可以通过 db 变量以某种方式设置它?

最佳答案

database/sql 包没有提供一种通用的方法来使对 database/sql.Open 的调用超时。但是,个别驱动程序通过 DSN (dataSourceName) 连接字符串提供此功能。

https://github.com/lib/pq

sql.Open("postgres", "user=user dbname=dbname connect_timeout=5")

https://github.com/go-sql-driver/mysql

sql.Open("mysql", "user:password@/dbname?timeout=5s")

https://github.com/denisenkom/go-mssqldb

sql.Open("sqlserver", "sqlserver://username:password@host/instance?dial+timeout=5")

等...

关于database - 在 Go 中为 SQL 连接设置 TCP 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40527808/

相关文章:

android - 在这种情况下如何使用 JOIN 和 CASE WHEN 语句(sqlite android)

java - 如何使用数据库导航器插件 intelliJ 连接到 mysql 服务器

amazon-web-services - x509:未知机构使用 AWS IoT 签署的证书

networking - 设计和实现网络协议(protocol)的最佳实践是什么?

mysql - 当我想创建区域搜索时,是否必须在数据库中为纬度和经度列创建索引?

mysql - MYSQL中如何从两个表中获取数据

go - Cayley 与 BoltDB 后端?

sql - 如何使用带有 filterRaw 的过滤器而不是原始的 beego

java - Java 中的 Little 和 Big Endian (android)

tcp - 奇怪的 Wireshark 行为(标记为 TCP 和 UDP 的单个数据包)