如果我将ddl.generate
和ddl.run
设置为true
,则在重新启动应用时,它总是会丢弃我的数据库。
如果我添加ddl.createOnly=true
,则在创建ebean服务器实例时会抛出异常。
问题:
无论如何我都说“请创建数据库,如果它不存在,或者如果已经创建了数据库则不做任何事情”?
答案 0 :(得分:2)
两者都是。设置为true时,ddl.generate和ddl.run将首先删除DDL。 但是当你将ddl.generate设置为false并且ddl.run设置为true时,它将首先删除DDL,然后创建DDL,如果在数据库中添加了任何新表,则会导致更新数据库。
参考:您可以看到https://ebean-orm.github.io/apidocs/com/avaje/ebean/dbmigration/DdlGenerator.html
答案 1 :(得分:1)
如果数据库不存在,请创建数据库
没有。
答案 2 :(得分:1)
作为一种解决方法,您可以将EbeanServerFactory.create()调用包装在try-catch块中,如此
ServerConfig serverConfig = new ServerConfig();
serverConfig.setName("mydb");
// ddl.generate, ddl.createOnly and ddl.run should be set to true in
// your ebean.properties file(if using one) else set them
// programmatically
serverConfig.loadFromProperties();
try {
server = EbeanServerFactory.create(ebeanConfig);
} catch(Exception e) {
ebeanConfig.setDdlRun(false);
server = EbeanServerFactory.create(ebeanConfig);
}
能够说createIfNotExists = true会更好,但这同时适用。