ebean 运行 仅当数据库不存在时才ddl

ebean run ddl only if the database does not exist

如果我将 ddl.generateddl.run 设置为 true,当我重新启动应用程序时,它总是会删除我的数据库。

如果我添加 ddl.createOnly=true,它会在我创建 ebean 服务器实例时抛出异常。

问题:

有什么要我说的吗"please create the database if it does not exist, or don't do anything if database is already created"?

please create the database if it does not exist

没有。

作为一种解决方法,您可以像这样将 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 会更好,但这同时有效。

两者都是。 ddl.generate 和 ddl.run 当设置为 true 时将首先删除 DDL。 但是,当您将 ddl.generate 设置为 false 并将 ddl.run 设置为 true 时,它​​将首先删除 DDL,然后创建 DDL,如果添加任何新的 table,则会导致数据库更新在数据库中。

参考:可以看到https://ebean-orm.github.io/apidocs/com/avaje/ebean/dbmigration/DdlGenerator.html