ebean запускает ddl только в том случае, если база данных не существует


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

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

Вопрос:

Могу ли я сказать: "пожалуйста, создайте базу данных, если она не существует, или ничего не делайте, если база данных уже создана"?

3 2

3 ответа:

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

Нет, не существует.

Оба ie. ЯОД.генерируйте и ddl.запуск, если установлено значение true, сначала отбросит DDL. Но когда вы устанавливаете ddl.генерировать в false и ddl.выполните значение true, после чего он сначала отбросит DDL, а затем создаст DDL, что приведет к обновлению базы данных, если в базу данных будет добавлена какая-либо новая таблица.

Ссылка: вы можете увидеть https://ebean-orm.github.io/apidocs/com/avaje/ebean/dbmigration/DdlGenerator.html

В качестве обходного пути можно обернуть 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, но это работает в это время.