2016-08-03 29 views
0

Ich versuche, ScalikeJdbc mit Teradata zu verwenden, aber es scheint nicht zu funktionieren. Ich habe eine Konfigurationsdatei:Scalikejdbc teradata "Verbindungspool wurde noch nicht initialisiert."

application.conf 

# JDBC settings 
db.default.user="user" 
db.default.password="pass" 
# Connection Pool settings 
db.default.poolInitialSize=10 
db.default.poolMaxSize=20 
db.default.connectionTimeoutMillis=1000 

# Teradata 
db.default.driver="com.teradata.jdbc.TeraDriver" 
db.default.url="jdbc:teradata://url/database=db" 

Der Code sieht wie folgt aus:

import scalikejdbc._ 
import scalikejdbc.config._ 


object DBObject { 
    DBs.setupAll() 

    case class Ad(id: Long, siteId: Int) 
    object Ad extends SQLSyntaxSupport[Ad] { 
    override val tableName = "ad_table" 

    def apply(rs: WrappedResultSet) = new Ad(rs.long("id"), rs.int("ad")) 
    } 

    ConnectionPool.borrow("default") 
    val ad = Ad.syntax("ad") 
    val ads = DB(ConnectionPool.borrow()) readOnly { implicit session => 
    withSQL { 
     select.from(Ad as ad).where.eq(ad.siteId, 3001).limit(10) 
    }.map(rs => Ad(rs)).list.apply 
    } 
} 

Während dieses Beispiel läuft es eine Ausnahme auslöst: Connection pool is not yet initialized. Was soll ich hier fehlt?

Antwort

0

Tim, ich nehme an, es hängt nicht speziell von Teradata ab. Versuchen Sie zunächst, den Standardverbindungspool zu initialisieren. Kleines Beispiel für Postgres:

object Main extends App { 

    def run() = { 
    Class.forName("org.postgresql.Driver") 
    val poolSettings = new ConnectionPoolSettings(initialSize = 100, maxSize = 100) 
    val url = "jdbc:postgresql://localhost:5432/test" 
    val user = "postgres" 
    val password = "postgres" 

    // create singleton(default) connection pool 
    ConnectionPool.singleton(url, user, password, poolSettings) 

    DB.localTx { implicit session ⇒ 
     val foos = Foo.findAll() 
     println(foos) 
    } 
    } 

    run() 
}