如果我有ddl.generate
和ddl.run
设置为true
,那么当我重新启动应用程序时,它总是会丢失我的数据库。ebean只有在数据库不存在的情况下才运行ddl
如果我添加ddl.createOnly=true
,它会在创建ebean服务器实例时抛出异常。
问:
反正对我说:“请创建数据库,如果它不存在,或者如果数据库已经创建什么也不做”?
如果我有ddl.generate
和ddl.run
设置为true
,那么当我重新启动应用程序时,它总是会丢失我的数据库。ebean只有在数据库不存在的情况下才运行ddl
如果我添加ddl.createOnly=true
,它会在创建ebean服务器实例时抛出异常。
问:
反正对我说:“请创建数据库,如果它不存在,或者如果数据库已经创建什么也不做”?
请创建数据库,如果不存在
它没有没有。
带有一点解决办法的,你可以用你的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 =真实的,但这在同时工作。
两者即ie。 ddl.generate和ddl.run设置为true时,首先会丢弃DDL。 但是,当您将ddl.generate设置为false并将ddl.run设置为true时,它将首先删除DDL,然后创建DDL,从而在数据库中添加任何新表时导致更新数据库。
参考:你可以看到https://ebean-orm.github.io/apidocs/com/avaje/ebean/dbmigration/DdlGenerator.html
好的提示。我会在我的工作中尝试。谢谢! –
很高兴能帮到你! – JacksonWeekes