2010-12-26 3 views
2

Я изучаю ворчливый и начал с этим кодом:Querulous - Можно ли использовать базу данных, отличную от MySQL?

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.newInstance (DelegatingConstructorAccessorImpl.java:27) на Java. lang.reflect.Constructor.newInstance (Constructor.java:513) at com. mysql .jdbc.Util.handleNewInstance (Util.java:409) at com. mysql .jdbc.SQLError.createCommunicationsException (SQLError.java:1118) at com. mysql .jdbc.MysqlIO. (MysqlIO.java:343) at com. mysql .jdbc.ConnectionImpl.connectOneTryOnly (ConnectionImpl.java:2308) at com. mysql .jdbc.ConnectionImpl.createNewIO (ConnectionImpl.java:2122) at com. mysql .jdbc.ConnectionImpl. (ConnectionImpl.java:774) at com. MySQL .jdbc.JDBC4Connection. (JDBC4Connection.java:49) на sun.reflect.NativeConstructorAccessorImpl.newInstance0 (Родной метод) на 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) на ком .mysql.jdbc.ConnectionImpl.getInstance (ConnectionImpl.java:375) at com.mysql.jdbc.NonRegisteringDriver.connect (NonRegisteringDriver.java:289) at java.sql.DriverManager.getConnectio n (DriverManager.java:582) at java.sql.DriverManager.getConnection (DriverManager.java:185) at org.apache.commons.dbcp.DriverManagerConnectionFactory.createConnection (DriverManagerConnectionFactory.java:75) at 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) at com.twitter.querulous.database.ApachePoolingDatabase.open (ApachePoolingDatabase.scala: 93) at com.twitter.querulous.database.Database $ class.withConnection (Database.scala: 33) at com.twitter.querulous.database.ApachePoolingDatabase.withConnecti на (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) at com.twitter.querulous.evaluator.StandardQueryEvaluator.select (StandardQueryEvaluator.scala: 19) по адресу org.database.Querulous.test (Querulous.scala: 10) at org.database.Main $ .main (Main.scala: 4) в org.database.Main.main (Main.scala) на sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) в 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) at sbt.Run.execute $ 1 (Run.scala: 4 7) at sbt.Run $$ anonfun $ run $ 2.apply (Run.scala: 50) at sbt.Run $$ anonfun $ run $ 2.apply (Run.scala: 50) at 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) at java.net.InetAddress.getAllByName (InetAddress.java:10 84) at java.net.InetAddress.getAllByName (InetAddress.java:1020) at com.mysql.jdbc.StandardSocketFactory.connect (StandardSocketFactory.java:275) at 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 (Родной метод) в sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java : 39) по адресу: sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance (Constructor.java:513) at 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) at com.twitter.querulous.database.Database $ class.withConnection (Database.scala: 33) at 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) at 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.invoke (Method.java:597) на sbt.Run.run0 (Run.scala: 60) на sbt.Run.execute $ 1 (Run.scala: 47) at sbt .Run $$ anonfun $ run $ 2.apply (Run.scala: 50) at sbt.Run $$ anonfun $ run $ 2.apply (Run.scala: 50) at sbt.TrapExit $ .executeMain $ 1 (TrapExit.scala : 33) в sbt.TrapExit $$ Anon $ 1.Run (TrapExit.scala: 42) [информация] == == Run [ошибка] ошибка запуска выполнения: Ненулевой код выхода: 1

Как для меня это выглядит не очень хорошо. Кажется, что querulous можно использовать только с mysql rdbms. Это правда? Во-вторых, есть куча ворчливый проектов 1234 с несколько различных инструкций, для нелогич-, от 1:

вал queryEvaluator = QueryEvaluator ("хозяин", "имя пользователя", "пароль")

(я не выяснить, что означает "хозяин")

из 2:

вал queryEvaluator = QueryEvaluator ("com.mysql.jdbc.Driver", "JDBC: MySQL: // локальный/MYDB", "имя пользователя", "пароль")

(используется в качестве образца)

И наконец, я использовал «com.twitter»% «querulous_2.8.0»% «1.5.0» для двоичных файлов и клонированный git: //github.com/twitter/querulous.git иметь источники (нет 1,5 источников, доступных для загрузки), но у них нет любых комментариев.

Итак, вопросы: может ли быть неудобным использоваться с базами данных, отличными от mysql? Если да, укажите пример подключения к нему; местоположение скалядока; нормальный (с комментариями) источник.

ответ

4

Этой вилка утверждает, что больше версий ванильных из ворчливых:

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

С их ридм:

Примечанием об этой вилке

Это форк ворчливых -generic (Querulous-generic, в свою очередь, является вилкой версии Twitter).Эта вилка будет:

  • Работа на Scala 2.8
  • работы на всех RDBMS (Ну, я только пытался H2, так что я не знаю)
  • не имеет никаких зависимостей в модуле Twitters StandardProject.

Более сложные функции (тайм-аут и т. Д.), Вероятно, не работают, так как мне пришлось разбить какой-то код, чтобы попасть сюда.

Пока я использую querulous, я использовал его только с mysql и не пробовал эту вилку самостоятельно.

+0

Хорошо, я вижу, что теперь это невозможно использовать. Может быть, я буду испытывать трудности после 6 месяцев. – Jeriho

Смежные вопросы