我在玩ScalikeJdbc图书馆。我想从PostgreSQL数据库中检索数据。我得到的错误对我来说很奇怪。即使我手动配置CP:
ScalikeJdbc
val poolSettings = new ConnectionPoolSettings(initialSize = 100, maxSize = 100) ConnectionPool.singleton("jdbc:postgresql://localhost:5432/test", "user", "pass", poolSettings)
我仍然看到错误。这是我的DAO:
class CustomerDAO { case class Customer(id: Long, firstname: String, lastname: String) object Customer extends SQLSyntaxSupport[Customer] val c = Customer.syntax("c") def findById(id: Long)(implicit session: DBSession = Customer.autoSession) = withSQL { select.from(Customer as c) }.map( rs => Customer( rs.int("id"), rs.string("firstname"), rs.string("lastname") ) ).single.apply() }
该应用程序:
object JdbcTest extends App { val dao = new CustomerDAO val res: Option[dao.Customer] = dao.findById(2) }
我的application.conf档案
application.conf
# PostgreSQL db.default.driver = "org.postgresql.Driver" db.default.url = "jdbc:postgresql://localhost:5432/test" db.default.user = "user" db.default.password = "pass" # Connection Pool settings db.default.poolInitialSize = 5 db.default.poolMaxSize = 7 db.default.poolConnectionTimeoutMillis = 1000
错误:
Exception in thread "main" java.lang.IllegalStateException: Connection pool is not yet initialized.(name:'default) at scalikejdbc.ConnectionPool$$anonfun$get$1.apply(ConnectionPool.scala:57) at scalikejdbc.ConnectionPool$$anonfun$get$1.apply(ConnectionPool.scala:55) at scala.Option.getOrElse(Option.scala:120) at scalikejdbc.ConnectionPool$.get(ConnectionPool.scala:55) at scalikejdbc.ConnectionPool$.apply(ConnectionPool.scala:46) at scalikejdbc.NamedDB.connectionPool(NamedDB.scala:20) at scalikejdbc.NamedDB.db$lzycompute(NamedDB.scala:32)
我错过了什么?
要加载application.conf,DBs.setupAll()应提前调用scalikejdbc-config 。
DBs.setupAll()
http://scalikejdbc.org/documentation/configuration.html#scalikejdbc- config
https://github.com/scalikejdbc/hello- scalikejdbc/blob/9d21ec7ddacc76977a7d41aa33c800d89fedc7b6/test/settings/DBSettings.scala#L3-L22