Liquibase не передает мои изменения - PullRequest
2 голосов
/ 03 марта 2012

Я запускаю Liquibase из приложения Java на MSSQL с драйвером JTDS. Когда я запускаю обновления, я вижу их отображенными, но на самом деле ничего не фиксируется в базе данных. Есть идеи? Код ниже работает в сервлете.

    Connection con = null;
    try {
        Properties props = new Properties();
        props.load(getClass().getResourceAsStream("/datasource.properties"));
        String driver = props.getProperty("database.driver");
        String url = props.getProperty("database.url");
        String username = props.getProperty("database.username");
        String password = props.getProperty("database.password");
        Class.forName(driver);
        con = DriverManager.getConnection(url, username, password);

        Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(new JdbcConnection(con));
        Liquibase liquibase = new Liquibase("db.xml", new ClassLoaderResourceAccessor(), database);
        response.getWriter().print("<PRE>");
        liquibase.update("", response.getWriter());

        con.commit();
    } catch (Exception e) {
        log.error(e.getMessage(), e);
        throw new ServletException(e.getMessage(), e);
    } finally {
        if (con != null) {
            try {
                con.close();
            } catch (SQLException e) {
                log.warn(e.getMessage(), e);
            }
        }
    }
    response.flushBuffer();

1 Ответ

3 голосов
/ 06 марта 2012

Метод update (), который принимает записывающее устройство, не выполнит изменения, а скорее выведет то, что будет выполнено.

Если вы вместо этого вызовете liquibase.update ("") или liquibase.update (null), изменения будут выполнены.

...