diff --git a/src/main/java/com/avaje/ebean/config/DbMigrationConfig.java b/src/main/java/com/avaje/ebean/config/DbMigrationConfig.java index 6e890186a..9ebb4337f 100644 --- a/src/main/java/com/avaje/ebean/config/DbMigrationConfig.java +++ b/src/main/java/com/avaje/ebean/config/DbMigrationConfig.java @@ -366,8 +366,8 @@ public class DbMigrationConfig { metaTable = properties.get("migration.metaTable", metaTable); runPlaceholders = properties.get("migration.placeholders", runPlaceholders); - String adminUser = properties.get("datasource."+serverName+".user", dbUser); - adminUser = properties.get("datasource."+serverName+".adminuser", adminUser); + String adminUser = properties.get("datasource."+serverName+".username", dbUser); + adminUser = properties.get("datasource."+serverName+".adminusername", adminUser); dbUser = properties.get("migration.dbuser", adminUser); String adminPwd = properties.get("datasource."+serverName+".password", dbPassword); diff --git a/src/main/java/com/avaje/ebean/dbmigration/MigrationRunner.java b/src/main/java/com/avaje/ebean/dbmigration/MigrationRunner.java index dac27e033..f06a1bf1c 100644 --- a/src/main/java/com/avaje/ebean/dbmigration/MigrationRunner.java +++ b/src/main/java/com/avaje/ebean/dbmigration/MigrationRunner.java @@ -21,7 +21,7 @@ import java.util.List; */ public class MigrationRunner { - private static final Logger logger = LoggerFactory.getLogger(MigrationRunner.class); + public static final Logger logger = LoggerFactory.getLogger("org.avaje.ebean.DbMigration"); private final EbeanServer server; @@ -48,8 +48,16 @@ public class MigrationRunner { String migrationUser = migrationConfig.getDbUser(); String migrationPwd = migrationConfig.getDbPassword(); + if (migrationUser == null) { + throw new IllegalStateException("No DB migration user specified (to run the db migration) ?"); + } DataSource dataSource = server.getPluginApi().getDataSource(); + if (dataSource == null) { + throw new IllegalStateException("No dataSource when trying to run migration? " + +"Maybe trying to generate DBMigration when ebean.migration.run=true is set? " + +"Perhaps need to set ebean.migration.run=false in test-ebean.properties?"); + } Connection connection; try { @@ -59,8 +67,8 @@ public class MigrationRunner { } try { + logger.debug("using db user [{}] to run migrations ..."); connection.setAutoCommit(false); - runMigrations(resources, connection); connection.commit(); @@ -85,6 +93,8 @@ public class MigrationRunner { // get the migrations in version order List localVersions = resources.getVersions(); + logger.info("local migrations:{} existing migrations:{}", localVersions.size(), table.size()); + LocalMigrationResource priorVersion = null; // run migrations in order diff --git a/src/main/java/com/avaje/ebean/dbmigration/runner/MigrationMetaRow.java b/src/main/java/com/avaje/ebean/dbmigration/runner/MigrationMetaRow.java index ae3beff8b..749e02acb 100644 --- a/src/main/java/com/avaje/ebean/dbmigration/runner/MigrationMetaRow.java +++ b/src/main/java/com/avaje/ebean/dbmigration/runner/MigrationMetaRow.java @@ -45,7 +45,7 @@ class MigrationMetaRow { MigrationMetaRow(SqlRow row) { id = row.getInteger("id"); status = row.getString("status"); - runVersion = row.getString("row_version"); + runVersion = row.getString("run_version"); depVersion = row.getString("dep_version"); comment = row.getString("comment"); checksum = row.getInteger("checksum"); @@ -53,6 +53,10 @@ class MigrationMetaRow { runBy = row.getString("run_by"); } + public String toString() { + return "id:" + id + " status:" + status + " runVersion:" + runVersion + " comment:" + comment + " runOn:" + runOn + " runBy:" + runBy; + } + /** * Return the id for this migration. */ diff --git a/src/main/java/com/avaje/ebean/dbmigration/runner/MigrationTable.java b/src/main/java/com/avaje/ebean/dbmigration/runner/MigrationTable.java index c97e8cede..d7adc0295 100644 --- a/src/main/java/com/avaje/ebean/dbmigration/runner/MigrationTable.java +++ b/src/main/java/com/avaje/ebean/dbmigration/runner/MigrationTable.java @@ -7,11 +7,11 @@ import com.avaje.ebean.SqlUpdate; import com.avaje.ebean.config.DbMigrationConfig; import com.avaje.ebean.config.ServerConfig; import com.avaje.ebean.config.dbplatform.DatabasePlatform; +import com.avaje.ebean.dbmigration.MigrationRunner; import com.avaje.ebean.plugin.SpiServer; import com.avaje.ebeaninternal.server.transaction.ExternalJdbcTransaction; import com.avaje.ebeaninternal.util.IOUtils; import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import java.io.IOException; import java.net.URL; @@ -27,7 +27,7 @@ import java.util.Map; */ public class MigrationTable { - private static final Logger logger = LoggerFactory.getLogger(MigrationTable.class); + private static final Logger logger = MigrationRunner.logger; private final Connection connection; @@ -70,6 +70,13 @@ public class MigrationTable { this.envUserName = System.getProperty("user.name"); } + /** + * Return the number of migrations in the DB migration table. + */ + public int size() { + return migrations.size(); + } + /** * Create the ScriptTransform for placeholder key/value replacement. */ @@ -229,6 +236,10 @@ public class MigrationTable { */ private void addMigration(MigrationMetaRow metaRow) { lastMigration = metaRow; - migrations.put(metaRow.getRunVersion(), metaRow); + String runVersion = metaRow.getRunVersion(); + if (runVersion == null) { + throw new IllegalStateException("No runVersion in db migration table row? " + metaRow); + } + migrations.put(runVersion, metaRow); } }