この操作のタイムアウトを作成するにはどうすればよいですか?
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
。