@Override public void migrate(Flyway flyway) { try { flyway.migrate(); } catch (FlywayException e) { if (e.getMessage().contains("1.15")) { logger.info("Found failed database migration. Attempting repair"); flyway.repair(); try { flyway.getConfiguration().getDataSource().getConnection().createStatement().executeUpdate("delete from PUBLIC.\"schema_version\" where \"version\" = '1.15' or \"version\" = '1.16'"); } catch (SQLException e1) { logger.error("Error while deleting old migration steps", e); } flyway.migrate(); } else { logger.error("Unable to migrate", e); throw e; } } } };
public void check() { logger.info("Start database migration"); final InitialContext cxt; final DataSource dataSource; try { cxt = new InitialContext(); dataSource = (DataSource) cxt.lookup("java:/comp/env/jdbc/cosmic"); } catch (final NamingException e) { logger.error(e.getMessage(), e); throw new CloudRuntimeException(e.getMessage(), e); } final Flyway flyway = new Flyway(); flyway.setDataSource(dataSource); flyway.setTable("schema_version"); flyway.setEncoding("UTF-8"); try { flyway.migrate(); } catch (final FlywayException e) { logger.error(e.getMessage(), e); throw new CloudRuntimeException(e.getMessage(), e); } logger.info("Database migration successful"); } }
private void migrateDbOrError(@NonNull MarquezConfig config) { final Flyway flyway = new Flyway(); final DataSourceFactory database = config.getDataSourceFactory(); flyway.setDataSource(database.getUrl(), database.getUser(), database.getPassword()); // Attempt to perform a database migration. An exception is thrown on failed migration attempts // requiring we handle the throwable and apply a repair on the database to fix any // issues before terminating. try { flyway.migrate(); } catch (FlywayException e) { log.error("Failed to apply migration to database.", e.getMessage()); log.info("Repairing failed database migration...", e.getMessage()); flyway.repair(); log.info("Successfully repaired database, stopping app..."); // The throwable is not propagating up the stack. onFatalError(); // Signal app termination. } }
} catch (FlywayException fEx) { _logger.error("Migration exception, ", fEx); if (fEx.getMessage().contains("contains a failed migration")) { flyway.repair(); migrationsCount = flyway.migrate();
} catch (FlywayException fEx) { _logger.error("Migration exception, ", fEx); if (fEx.getMessage().contains("contains a failed migration")) { flyway.repair(); migrationsCount = flyway.migrate();