2016-02-27 5 views
2

Если у меня есть ddl.generate10 и ddl.run, установленный на true, он всегда бросает мою базу данных при перезагрузке приложения.ebean запустить ddl только в том случае, если база данных не существует

Если я добавлю ddl.createOnly=true, он исключит исключение, когда создам экземпляр сервера ebean.

Вопрос:

Есть в любом случае для меня, чтобы сказать «пожалуйста, создать базу данных, если она не существует, или вообще ничего не делать, если база данных уже создана»?

ответ

0

пожалуйста создать базу данных, если она не существует

Нет там нет.

1

Как немного обходного пути, вы можете обернуть EbeanServerFactory.create() вызов в примерочных поймать блок как так

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 = верно, но это работает тем временем.

+0

Хороший отзыв. Я попробую это в своей работе. спасибо! –

+0

Рад, что я могу помочь! – JacksonWeekes

2

И т. 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