2016-07-07 9 views
0

SybaseでLiquibase 3.5.1をテストすると、最初のテーブルが作成され、liquibaseがDATABASECHANGELOGを更新しようとした後に例外が発生することがわかります。DEPABYECHANGELOG、liquibase 3.5.1

私の研究が作成されますないテーブルが実際にDEPLOYMENT_IDが欠落している

@Override 
    public Sql[] generateSql(CreateDatabaseChangeLogTableStatement statement, Database database, SqlGeneratorChain sqlGeneratorChain) { 
     return new Sql[] { 
       new UnparsedSql("CREATE TABLE " + database.escapeTableName(database.getLiquibaseCatalogName(), database.getLiquibaseSchemaName(), database.getDatabaseChangeLogTableName()) + " (ID VARCHAR(150) NOT NULL, " + 
       "AUTHOR VARCHAR(150) NOT NULL, " + 
       "FILENAME VARCHAR(255) NOT NULL, " + 
       "DATEEXECUTED " + DataTypeFactory.getInstance().fromDescription("datetime", database).toDatabaseDataType(database) + " NOT NULL, " + 
       "ORDEREXECUTED INT NOT NULL, " + 
       "EXECTYPE VARCHAR(10) NOT NULL, " + 
       "MD5SUM VARCHAR(35) NULL, " + 
       "DESCRIPTION VARCHAR(255) NULL, " + 
       "COMMENTS VARCHAR(255) NULL, " + 
       "TAG VARCHAR(255) NULL, " + 
       "LIQUIBASE VARCHAR(20) NULL, " + 
       "CONTEXTS VARCHAR(255) NULL, " + 
       "LABELS VARCHAR(255) NULL, " + 
       "PRIMARY KEY(ID, AUTHOR, FILENAME))", 
         getAffectedTable(database)) 
     }; //To change body of implemented methods use File | Settings | File Templates. 

新しいDEPLOYMENT_ID列がCreateDatabaseChangeLogTableGeneratorSybaseに追加されていないことを示していると思われる:

DROP TABLE dbo.MCH_DATABASE_CHANGE_LOG; 

CREATE TABLE dbo.DATABASECHANGELOG 
(
    ID    varchar(150) NOT NULL, 
    AUTHOR   varchar(150) NOT NULL, 
    FILENAME  varchar(255) NOT NULL, 
    DATEEXECUTED datetime  NOT NULL, 
    ORDEREXECUTED int   NOT NULL, 
    EXECTYPE  varchar(10) NOT NULL, 
    MD5SUM   varchar(35), 
    DESCRIPTION varchar(255), 
    COMMENTS  varchar(255), 
    TAG   varchar(255), 
    LIQUIBASE  varchar(20), 
    CONTEXTS  varchar(255), 
    LABELS   varchar(255) 
); 

私は例外取得:

Caused by: liquibase.exception.DatabaseException: Invalid column name 'DEPLOYMENT_ID'. 
[Failed SQL: INSERT INTO [dbo].[MTA_DATABASE_CHANGE_LOG] ([ID], [AUTHOR], [FILENAME], [DATEEXECUTED], [ORDEREXECUTED], [MD5SUM], [DESCRIPTION], [COMMENTS], [EXECTYPE], [CONTEXTS], [LABELS], [LIQUIBASE], [DEPLOYMENT_ID]) VALUES ('create-message-table', 'TAA.team', 'com/mcorp/tools/integration/persistence/liquibase/MTA.db.changelog-create.xml', GETDATE(), 1, '7:7fd70289c6cfc92aa9a8b2206743f4bf', 'createTable tableName=MTA_MESSAGES; sql', '', 'EXECUTED', 'table', NULL, '3.5.1', '7855321615')] 
    at liquibase.executor.jvm.JdbcExecutor$ExecuteStatementCallback.doInStatement(JdbcExecutor.java:301) 
    at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:55) 
    at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:107) 
    at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:97) 
    at liquibase.changelog.StandardChangeLogHistoryService.setExecType(StandardChangeLogHistoryService.java:341) 
    at liquibase.database.AbstractJdbcDatabase.markChangeSetExecStatus(AbstractJdbcDatabase.java:1134) 
    at liquibase.changelog.visitor.UpdateVisitor.visit(UpdateVisitor.java:62) 
    at liquibase.changelog.ChangeLogIterator.run(ChangeLogIterator.java:79) 
    at liquibase.Liquibase.update(Liquibase.java:214) 
    at liquibase.Liquibase.update(Liquibase.java:192) 
    at liquibase.Liquibase.update(Liquibase.java:188) 
    at com.mcorp.tools.integration.persistence.liquibase.LiquibaseExecutor.execute(LiquibaseExecutor.java:195) 
    ... 34 more 
Caused by: java.sql.SQLException: Invalid column name 'DEPLOYMENT_ID'. 

    at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:372) 
    at net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2893) 
    at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2335) 
    at net.sourceforge.jtds.jdbc.TdsCore.getMoreResults(TdsCore.java:638) 
    at net.sourceforge.jtds.jdbc.JtdsStatement.processResults(JtdsStatement.java:613) 
    at net.sourceforge.jtds.jdbc.JtdsStatement.executeSQL(JtdsStatement.java:572) 
    at net.sourceforge.jtds.jdbc.JtdsStatement.executeImpl(JtdsStatement.java:809) 
    at net.sourceforge.jtds.jdbc.JtdsStatement.execute(JtdsStatement.java:1282) 
    at org.apache.commons.dbcp.DelegatingStatement.execute(DelegatingStatement.java:264) 
    at org.apache.commons.dbcp.DelegatingStatement.execute(DelegatingStatement.java:264) 
    at org.apache.commons.dbcp.DelegatingStatement.execute(DelegatingStatement.java:264) 
    at liquibase.executor.jvm.JdbcExecutor$ExecuteStatementCallback.doInStatement(JdbcExecutor.java:299) 
    ... 45 more 

答えて

0

私は同じです訴える。 3.5.1がデータベースで初めて実行されると、「列DEPLOYMENT_IDが存在しません」というエラーが発生して失敗します。しかし、2回目の試合ではLiquibase自体が修正されています。私はお勧めします:

  1. もう一度同じLiquibaseコマンドを実行してみてください。その後... https://liquibase.jira.com/
+0

から

  • ファイルのバグは、私が提起:https://liquibase.jira.com/browse/CORE-2818 を私は私はこれで発電機クラスの私のパッチを適用したバージョンを追加しました回避策として今すぐ実行することができます。 、3.5.1とSybaseに関連する別のバグが見つかった: https://liquibase.jira.com/browse/CORE-2819 – consultantleon

  • 関連する問題