【问题标题】:Querulous -- Is it usable with a database other than MySQL?Querulous -- 它是否可用于 MySQL 以外的数据库?
【发布时间】: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)源位置。

【问题讨论】:

    标签: database scala querulous


    【解决方案1】:

    这个分支声称更像是 Querulous 的香草版本:

    https://github.com/ollekullberg/querulous-light

    来自他们的自述文件:

    关于这个 Fork 的注意事项

    这是 Querulous-generic 的一个分支(Querulous-generic 又是 Twitter 版本的一个分支)。这个分叉将:

    • 使用 Scala 2.8
    • 在所有 RDBM 上工作(好吧,我只尝试过 H2,所以我不太清楚)
    • 与 Twitters StandardProject 模块没有任何依赖关系。

    更高级的功能(超时等)可能不起作用,因为我不得不破坏一些代码才能到达这里。

    虽然我用的是 querulous,但我只用过 mysql,并没有自己尝试过这个 fork。

    【讨论】:

    • 好的,我发现它现在不可用了。也许我会在 6 个月后尝试抱怨。
    猜你喜欢
    • 2010-11-02
    • 2013-05-29
    • 1970-01-01
    • 2015-08-02
    • 1970-01-01
    • 2015-03-31
    • 1970-01-01
    • 2015-02-23
    相关资源
    最近更新 更多