【发布时间】:2010-12-26 20:14:31
【问题描述】:
我正在学习 querulous,并从这段代码开始:
import com.twitter.querulous.evaluator.QueryEvaluator
class Querulous {
def test {
val queryEvaluator = QueryEvaluator("org.h2.Driver", "jdbc:h2:tcp://localhost/~/test", "sa", "")
val names = queryEvaluator.select("select (name) from mytable where id in (?)", List(1, 2, 3)) {
row =>
row.getString("name")
}
println(names)
}
}
执行结果如下:
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: 通讯链路故障
最后一个数据包成功发送到 服务器是 0 毫秒前。这 驱动程序没有收到任何数据包 从服务器。 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native 方法) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:513) 在 com.mysql.jdbc.Util.handleNewInstance(Util.java:409) 在 com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1118) 在 com.mysql.jdbc.MysqlIO.(MysqlIO.java:343) 在 com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2308) 在 com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2122) 在 com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:774) 在 com.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:49) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native 方法) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:513) 在 com.mysql.jdbc.Util.handleNewInstance(Util.java:409) 在 com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:375) 在 com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:289) 在 java.sql.DriverManager.getConnection(DriverManager.java:582) 在 java.sql.DriverManager.getConnection(DriverManager.java:185) 在 org.apache.commons.dbcp.DriverManagerConnectionFactory.createConnection(DriverManagerConnectionFactory.java:75) 在 org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582) 在 org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1148) 在 org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:106) 在 com.twitter.querulous.database.ApachePoolingDatabase.open(ApachePoolingDatabase.scala:93) 在 com.twitter.querulous.database.Database$class.withConnection(Database.scala:33) 在 com.twitter.querulous.database.ApachePoolingDatabase.withConnection(ApachePoolingDatabase.scala:45) 在 com.twitter.querulous.evaluator.StandardQueryEvaluator.withTransaction(StandardQueryEvaluator.scala:66) 在 com.twitter.querulous.evaluator.StandardQueryEvaluator.select(StandardQueryEvaluator.scala:23) 在 com.twitter.querulous.evaluator.QueryEvaluator$class.select(QueryEvaluator.scala:88) 在 com.twitter.querulous.evaluator.StandardQueryEvaluator.select(StandardQueryEvaluator.scala:19) 在 org.database.Querulous.test(Querulous.scala:10) 在 org.database.Main$.main(Main.scala:4) 在 org.database.Main.main(Main.scala) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native 方法) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 sbt.Run.run0(Run.scala:60) 在 sbt.Run.execute$1(Run.scala:47) 在 sbt.Run$$anonfun$run$2.apply(Run.scala:50) 在 sbt.Run$$anonfun$run$2.apply(Run.scala:50) 在 sbt.TrapExit$.executeMain$1(TrapExit.scala:33) 在 sbt.TrapExit$$anon$1.run(TrapExit.scala:42) 造成的: java.net.UnknownHostException: org.h2.Driver 在 java.net.Inet6AddressImpl.lookupAllHostAddr(本机 方法) 在 java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:850) 在 java.net.InetAddress.getAddressFromNameService(InetAddress.java:1201) 在 java.net.InetAddress.getAllByName0(InetAddress.java:1154) 在 java.net.InetAddress.getAllByName(InetAddress.java:1084) 在 java.net.InetAddress.getAllByName(InetAddress.java:1020) 在 com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:275) 在 com.mysql.jdbc.MysqlIO.(MysqlIO.java:292) 在 com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2308) 在 com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2122) 在 com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:774) 在 com.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:49) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native 方法) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:513) 在 com.mysql.jdbc.Util.handleNewInstance(Util.java:409) 在 com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:375) 在 com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:289) 在 java.sql.DriverManager.getConnection(DriverManager.java:582) 在 java.sql.DriverManager.getConnection(DriverManager.java:185) 在 org.apache.commons.dbcp.DriverManagerConnectionFactory.createConnection(DriverManagerConnectionFactory.java:75) 在 org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582) 在 org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1148) 在 org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:106) 在 com.twitter.querulous.database.ApachePoolingDatabase.open(ApachePoolingDatabase.scala:93) 在 com.twitter.querulous.database.Database$class.withConnection(Database.scala:33) 在 com.twitter.querulous.database.ApachePoolingDatabase.withConnection(ApachePoolingDatabase.scala:45) 在 com.twitter.querulous.evaluator.StandardQueryEvaluator.withTransaction(StandardQueryEvaluator.scala:66) 在 com.twitter.querulous.evaluator.StandardQueryEvaluator.select(StandardQueryEvaluator.scala:23) 在 com.twitter.querulous.evaluator.QueryEvaluator$class.select(QueryEvaluator.scala:88) 在 com.twitter.querulous.evaluator.StandardQueryEvaluator.select(StandardQueryEvaluator.scala:19) 在 org.database.Querulous.test(Querulous.scala:10) 在 org.database.Main$.main(Main.scala:4) 在 org.database.Main.main(Main.scala) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native 方法) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 sbt.Run.run0(Run.scala:60) 在 sbt.Run.execute$1(Run.scala:47) 在 sbt.Run$$anonfun$run$2.apply(Run.scala:50) 在 sbt.Run$$anonfun$run$2.apply(Run.scala:50) 在 sbt.TrapExit$.executeMain$1(TrapExit.scala:33) 在 sbt.TrapExit$$anon$1.run(TrapExit.scala:42) [信息] == 运行 == [错误] 运行出错 运行:非零退出代码:1
对我来说,它看起来不太好。似乎querulous只能与mysql rdbms一起使用。真的吗? 其次,还有一堆乱七八糟的项目1234指令略有不同,比如来自1:
val queryEvaluator = QueryEvaluator("主机", "用户名", “密码”)
(我没有弄清楚“主机”是什么意思)
来自2:
val queryEvaluator = QueryEvaluator("com.mysql.jdbc.Driver", "jdbc:mysql://localhost/mydb", “用户名”、“密码”)
(以此为样本)
最后,我使用 "com.twitter" % "querulous_2.8.0" % "1.5.0" 作为二进制文件并克隆了 git://github.com/twitter/querulous.git 以获得源(没有 1.5 个源可供下载),但他们没有任何 cmets。
那么,问题:querulous 可以与 mysql 以外的数据库一起使用吗? 如果是这样,请指定示例如何连接它;斯卡拉多克位置;正常(使用 cmets)源位置。
【问题讨论】: