Postgresql 在Global.beforeStart中加载数据库驱动程序
我想在每次启动时实现一些数据库清理(在开发环境中完全删除和重新创建模式) 我是在Global.beforeStart做这件事的。而且因为它实际上是在开始之前,所以我需要自己加载DB驱动程序 代码是:Postgresql 在Global.beforeStart中加载数据库驱动程序,postgresql,jdbc,playframework,ebean,Postgresql,Jdbc,Playframework,Ebean,我想在每次启动时实现一些数据库清理(在开发环境中完全删除和重新创建模式) 我是在Global.beforeStart做这件事的。而且因为它实际上是在开始之前,所以我需要自己加载DB驱动程序 代码是: @Override public void beforeStart(Application app){ System.out.println("IN beforeStart"); try{ Class.forName("org.postgresql.D
@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)上
为什么?使用
onStart
相反,它是在beforeStart
之后执行的,但它自然适合在数据库上操作(在生产模式下,它不会等待第一个请求),javadoc适用于它们:
/**
* Executed before any plugin - you can set-up your database schema here, for instance.
*/
public void beforeStart(Application app) {
}
/**
* Executed after all plugins, including the database set-up with Evolutions and the EBean wrapper.
* This is a good place to execute some of your application code to create entries, for instance.
*/
public void onStart(Application app) {
}
注意,您不需要在此处另外包含DB config,您可以在此处使用与在controller中相同的模型。您的JDBC url错误,它应该以
JDBC:postgresql:
开头(url的其余部分看起来也错误),另请注意,不再需要加载符合JDBC 4的驱动程序。