Querulous - это можно использовать с другой базой данных, кроме MySQL?
Я изучаю 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(собственный метод) в sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) в sun.reflect.DelegatingConstructorAccessorImpl.avarestructorImpl.jj.Instructor (javl).newInstance(Constructor.java:513) в ком.mysql.jdbc.Util.handleNewInstance (Util.java:409) на ком.mysql.jdbc.SQLError.createCommunicationsException (SQLError.java:1118) на ком.mysql.jdbc.MysqlIO. (MysqlIO.java:343) на ком.mysql.jdbc.ConnectionImpl.connectOneTryOnly (ConnectionImpl.java:2308) на ком.mysql.jdbc.ConnectionImpl.createNewIO (ConnectionImpl.java:2122) на ком.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:774) на ком.mysql.jdbc.JDBC4Connection. (JDBC4Connection.java:49) в sun.reflect.NativeConstructorAccessorImpl.newInstance0(собственный метод) в sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImplImpImpAmp_Ampor.Ampor.Ampor.Ampor..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.getanjj (:185) по адресу org.apache.commons.dbcp.DriverManagerConnectionFactory.createConnection(DriverManagerConnectionFactory.java:75) по адресу org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.com..pool. at.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1148) в org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:106) в com.twitter.querulous.database.ApachePoolingDatabase.open(ApachePoolingDatabase atala.sca..querulous.database.Database$class.withConnection(Database.scala:33) по адресу com.twitter.querulous.database.ApachePoolingDatabase.withConnection(ApachePoolingDatabase.scala:45) по адресу com.twitter.querulous.evaluator.StandardQueryEvaluator.withTransport.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(собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) в sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) в java.lang.reflect.Method.ava (at)..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(InetAdd) (inetAdd)..InetAddress.getAllByName0(InetAddress.java:1154) в java.net.InetAddress.getAllByName(InetAddress.java:1084) в java.net.InetAddress.getAllByName(InetAddress.java:1020) в com. подключиться (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.jbys.jb). ConnectionImpl. (ConnectionImpl.java:774) в com.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:49) в sun.reflect.NativeConstructorAccessorImpl.newInstance0(собственный метод) в sun.reflect.NativeConstructorAewsInmpImpImpImpIgnIccessIccessIccessor 39) в sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) в java.lang.reflect.Constructor.newInstance(Constructor.java:513) в com.mysql.jdbc.Util.handleNewjancej) в com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:375) в com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:289) в java.sql.DriverManager.getConnection (DriverManager). в java.sql.DriverManager.getConnection(DriverManager.java:185) в org.apache.commons.dbcp.DriverManage rConnectionFactory.createConnection (DriverManagerConnectionFactory.java:75) по адресу org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582) по адресу org.apache.commons.pool.impl.ject48.bor.ol.Ob в org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:106) в com.twitter.querulous.database.ApachePoolingDatabase.open(ApachePoolingDatabase.scala:93) в com.twitter.querulous.database.Database$.withConnection (Database.scala: 33) в com.twitter.querulous.database.ApachePoolingDatabase.withConnection(ApachePoolingDatabase.scala:45) в com.twitter.querulous.evaluator.StandardQueryEvaluator.withTransaction(StandardQueryEvaluator) twitter.querulous.evaluator.StandardQueryEvaluator.select (StandardQueryEvaluator.scala: 23) в com.twitter.querulous.evaluator.QueryEvaluator$class.select(QueryEvaluator.scala:88) в com.twitter.querulous.evaluator.StandardQueryE стандарт QueryEvaluator.scala: 19) в org.database.Querulous.test(Querulous.scala:10) в org.database.Main$.main(Main.scala:4) в org.database.Main.main(Main.scala) at sun.reflect.NativeMethodAccessorImpl.invoke0(нативный метод) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) в sun.reflect.DelegatingMethodAccessorImpl.intho.j.jj.invoke(Method.java:597) в sbt.Run.run0(Run.scala:60) в sbt.Run.execute$1(Run.scala:47) в sbt.Run $$ anonfun $ run $ 2.apply (Выполнить.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) [info] == run == [error] Ошибка выполнения run: ненулевой код выхода: 1
Что касается меня, это выглядит не очень хорошо. Кажется, что querulous можно использовать только с mysql rdbms. Это правда? Во-вторых, есть куча интересных проектов 1 2 3 4 с немного отличающимися инструкциями, например, от 1:
val queryEvaluator = QueryEvaluator ("хост", "имя пользователя", "пароль")
(Я не понял, что означает "хозяин")
из 2:
val queryEvaluator = QueryEvaluator ("com.mysql.jdbc.Driver", "jdbc: mysql: // localhost / mydb", "username", "password")
(использовал это как образец)
И, наконец, я использовал "com.twitter" % "querulous_2.8.0" % "1.5.0" для двоичных файлов и клонированного git://github.com/twitter/querulous.git, чтобы иметь источники (нет доступных для загрузки источников 1.5) но они не имеют никаких комментариев.
Итак, вопросы: можно ли использовать querulous с базами данных, отличными от mysql? Если это так, пожалуйста, укажите пример, как подключиться к нему; скалярное местоположение; нормальное (с комментариями) расположение источников.
1 ответ
Эта форк утверждает, что это скорее ванильная версия Querulous:
https://github.com/ollekullberg/querulous-light
Из их readme:
Примечание об этой вилке
Это форк Querulous-generic (Querulous-generic, в свою очередь, является форком версии Twitter). Эта вилка будет:
- Работа на Scala 2.8
- Работа на всех RDBM (ну, я только попробовал H2, поэтому я не знаю)
- Не имеет никаких зависимостей от модуля Twitters StandardProject.
Более продвинутые функции (тайм-аут и т. Д.), Вероятно, не работают, так как мне пришлось разбить некоторый код, чтобы попасть сюда.
Хотя я использую Querulous, я использовал его только с MySQL и сам не пробовал эту вилку.