ebean запускает ddl только в том случае, если база данных не существует
Если для ddl.generate
и ddl.run
установлено значение true
, то при перезапуске приложения моя база данных всегда удаляется.
Если я добавлю ddl.createOnly=true
, он выдаст исключение при создании экземпляра сервера ebean.
Вопрос:
Могу ли я сказать: "пожалуйста, создайте базу данных, если она не существует, или ничего не делайте, если база данных уже создана"?
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, но это работает в это время.