gpt4 book ai didi

java - 无法多次连接到mysql

转载 作者:行者123 更新时间:2023-11-29 02:32:40 24 4
gpt4 key购买 nike

我正在用 scala 编写自己的数据库。为了验证我的结果是否正确,我检查了 specs2 规范中的 MySQL。我得到了正确的结果,一切都很好。但是如果我在没有任何更改的情况下再次运行测试,我会得到一个 SQLException: No suitable driver found for jdbc:mysql://localhost:3306/DBNAME?user=DBUSER (null:-1)。为什么没有再次加载驱动程序?

编辑

import java.sql.{ Connection, DriverManager, ResultSet }
import org.specs2.mutable.Specification
// SDDB imports ...

class DBValidationSpec extends Specification {

"SDDB and MySQl" should {
// SDDB
// ...
// JDBC
val connectionString = "jdbc:mysql://localhost:3306/sddb_test?user=root"
val query = """SELECT content, SUM( duration ) duration
FROM test
WHERE times
BETWEEN '2011-12-08'
AND '2011-12-09'
GROUP BY content"""
classOf[com.mysql.jdbc.Driver]

"give the same result" in {
// ...
//sddbResult

lazy val conn = DriverManager.getConnection(connectionString)
try{
val rs = conn.createStatement().executeQuery(query)
var mysqlResult = Map[List[String], Int]()
while (rs.next) {
mysqlResult += (rs.getString("content") :: Nil) -> rs.getInt("duration")
}
sddbResult == mysqlResult && sddbResult.size == 478 must beTrue
} finally {
conn.close()
}
}

}

}

我遗漏了部分代码,因为它们不属于问题。

编辑 #2

问题变得更奇怪了。我添加了第二个测试用例。测试用例使用相同的 connectionString。异常只被提出一次。第二次测试成功。我将 sequential 添加到我的测试定义中,发现只有第一个执行的测试会引发异常。之后我跟踪 classLoader 来检查它是否是同一个。这是。
我做了以下解决方法:

trait PreExecuting extends Before {
override def before {
var conn: Option[Connection] = None
try {
val connectionString = "jdbc:mysql://localhost:3306/sddb_test?user=root"
conn = Some(DriverManager.getConnection(connectionString))
} catch {
case _ =>
} finally {
conn map (_.close())
}
}
}

我不再收到异常,因为我使用 PreExecution tait 抑制了它。但我仍然想知道这里出了什么问题。

最佳答案

我无法将错误归结为以下错误,但至少最好也关闭结果集和语句。

    val stmt = conn.createStatement()
val rs = stmt.executeQuery(query)
var mysqlResult = Map[List[String], Int]()
while (rs.next) {
mysqlResult += (rs.getString("content") :: Nil) -> rs.getInt("duration")
}
sddbResult == mysqlResult && sddbResult.size == 478 must beTrue
rs.close()
stmt.close()

关于java - 无法多次连接到mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10584142/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com