【发布时间】:2014-03-21 09:52:57
【问题描述】:
我想在每次启动时执行一些数据库清理(在开发环境中完全删除和重新创建架构)。
我正在 Global.beforeStart 中执行此操作。而且因为它确实是开始之前我需要自己加载数据库驱动程序。
代码是:
@Override
public void beforeStart(Application app){
System.out.println("IN beforeStart");
try{
Class.forName("org.postgresql.Driver");
System.out.println("org.postgresql.Driver LOADED");
} catch (ClassNotFoundException cnfe){
System.out.println("NOT LOADED org.postgresql.Driver");
cnfe.printStackTrace();
}
ServerConfig config = new ServerConfig();
config.setName("pgtest");
DataSourceConfig postgresDb = new DataSourceConfig ();
postgresDb.setDriver("org.postgresql.Driver");
postgresDb.setUsername("postgres");
postgresDb.setPassword("postgrespassword");
postgresDb.setUrl("postgres://postgres:postgrespassword@localhost:5432/TotoIntegration2");
config.setDataSourceConfig(postgresDb);
config.setDefaultServer(true);
EbeanServer server = EbeanServerFactory.create(config);
SqlQuery countTables = Ebean.createSqlQuery("select count(*) from pg_stat_user_tables;");
Integer numTables = countTables.findUnique().getInteger("count");
System.out.println("numTables = " + numTables);
if(numTables>2){
DbHelper.cleanSchema();
}
System.out.println("beforeStart EXECUTED");
//DbHelper.cleanSchema();
}
Class.forName("org.postgresql.Driver") 毫无例外地通过了,但是我得到了:
com.avaje.ebeaninternal.server.lib.sql.DataSourceException: java.sql.SQLException: 找不到适合 postgres 的驱动程序
就行 EbeanServer server = EbeanServerFactory.create(config);
为什么?
【问题讨论】:
-
您的 JDBC url 错误,它应该以
jdbc:postgresql:开头(并且 URL 的其余部分看起来也错误),请参阅 jdbc.postgresql.org/documentation/92/connect.html 另请注意,不再需要符合 JDBC 4 的驱动程序已加载。
标签: postgresql jdbc playframework ebean