如何为此操作创建超时:?
def db = Sql.newInstance("jdbc:mysql://${mysql_host}:3306/${dbName}",
user, pass, 'com.mysql.jdbc.Driver')
db.eachRow(query) { row ->
// do something with the row
}
我相信正确的方法是这样的:
sql = Sql.newInstance("jdbc:oracle:thin:@localhost:1521:XE", "user",
"pwd", "oracle.jdbc.driver.OracleDriver")
sql.withStatement {
stmt -> stmt.queryTimeout = 10
}
sql.eachRow("select * from someTable", {
println it
} )
当然,这是我使用 Oracle 的地方,但我希望这可以给你一个想法。
我相信可能没有一个通用的答案,而是通过参数到连接 URL 的特定于数据库/驱动程序的答案。
例如对于 mysql,我认为添加connectTimeout=something&socketTimeout=something
可能会成功。