Fehlerbehebung
Detail
#26970
Falsche DB-Konfiguration bei Replay nach Änderung FastList-Tabelle
Mit #25881 wurde das Format der Tabelle FAST_LIST geändert. Die Spalte MODULE_TYPE ist entfallen.
In der Migration wurde allerdings nicht die in der Datenbank gespeicherte Schema-Konfiguration angepasst. Da es keine automatische Schema-Migration gibt, wird ebenso die gespeicherte Schema-Konfiguration nicht aktualisiert.
Wird nun eine Replay-Migration ausgeführt, so wird die Schema-Konfiguration aus der Datenbank benutzt um die Daten zu dumpen. Aus der gespeicherten Konfiguration wird jedoch die Existenz der Spalte MODULE_TYPE abgeleitet, so dass es bei der Erstellung des Dump's zu folgender Fehlermeldung kommt:
com.top_logic.basic.module.RestartException: Unable to restart 'com.top_logic.basic.XMLProperties$Module[impl:'com.top_logic.basic.XMLProperties']' at ... at com.top_logic.knowledge.service.migration.MigrationService.migrate(MigrationService.java:391) at com.top_logic.knowledge.service.migration.MigrationService.startUp(MigrationService.java:355) at com.top_logic.basic.module.ManagedClass.doStart(ManagedClass.java:121) at com.top_logic.basic.module.BasicRuntimeModule.startUpImplementation(BasicRuntimeModule.java:195) ... 89 more Caused by: com.top_logic.knowledge.service.KnowledgeBaseRuntimeException: java.sql.SQLException: Feld "MODULE_TYPE" nicht gefunden Column "MODULE_TYPE" not found; SQL statement: SELECT "BRANCH" AS "BRANCH", "IDENTIFIER" AS "IDENTIFIER", "REV_MAX" AS "REV_MAX", "REV_MIN" AS "REV_MIN", "REV_CREATE" AS "REV_CREATE", "PHYSICAL_RESOURCE" AS "PHYSICAL_RESOURCE", "ANNOTATIONS" AS "ANNOTATIONS", "NAME" AS "NAME", "DESCR" AS "DESCR", "DEFAULT_ID" AS "DEFAULT_ID", "MODULE_TYPE" AS "MODULE_TYPE", "MODULE_ID" AS "MODULE_ID" FROM "FAST_LIST" WHERE ("REV_MAX" >= ?) AND ("REV_MAX" < ?) ORDER BY "BRANCH" ASC, "IDENTIFIER" ASC, "REV_MAX" ASC [42122-210]: SELECT "BRANCH" AS "BRANCH", "IDENTIFIER" AS "IDENTIFIER", "REV_MAX" AS "REV_MAX", "REV_MIN" AS "REV_MIN", "REV_CREATE" AS "REV_CREATE", "PHYSICAL_RESOURCE" AS "PHYSICAL_RESOURCE", "ANNOTATIONS" AS "ANNOTATIONS", "NAME" AS "NAME", "DESCR" AS "DESCR", "DEFAULT_ID" AS "DEFAULT_ID", "MODULE_TYPE" AS "MODULE_TYPE", "MODULE_ID" AS "MODULE_ID" FROM "FAST_LIST" WHERE ("REV_MAX" >= ?) AND ("REV_MAX" < ?) ORDER BY "BRANCH" ASC, "IDENTIFIER" ASC, "REV_MAX" ASC at com.top_logic.knowledge.service.db2.ItemEventReader.readEvent(ItemEventReader.java:509) at com.top_logic.knowledge.service.db2.OrderedItemEventReader.nextChunk(OrderedItemEventReader.java:120) at com.top_logic.knowledge.service.db2.OrderedItemEventReader.init(OrderedItemEventReader.java:96) at com.top_logic.knowledge.service.db2.OrderedItemEventReader.<init>(OrderedItemEventReader.java:84) at com.top_logic.knowledge.service.db2.DBKnowledgeBase.internalGetReader(DBKnowledgeBase.java:4506) at com.top_logic.knowledge.service.db2.DBKnowledgeBase.getChangeSetReader(DBKnowledgeBase.java:4476) at com.top_logic.knowledge.service.db2.DBKnowledgeBase.getChangeSetReader(DBKnowledgeBase.java:4448) at com.top_logic.knowledge.service.db2.migration.KnowledgeBaseDumper.dumpChangeSets(KnowledgeBaseDumper.java:201) at com.top_logic.knowledge.service.db2.migration.KnowledgeBaseDumper.dump(KnowledgeBaseDumper.java:180) at com.top_logic.knowledge.service.db2.migration.KnowledgeBaseDumper.dump(KnowledgeBaseDumper.java:166) at com.top_logic.knowledge.service.migration.MigrationService.dumpKB(MigrationService.java:617) at com.top_logic.knowledge.service.migration.MigrationService.replayHistory(MigrationService.java:568) ... 94 more Caused by: java.sql.SQLException: Feld "MODULE_TYPE" nicht gefunden Column "MODULE_TYPE" not found; SQL statement: SELECT "BRANCH" AS "BRANCH", "IDENTIFIER" AS "IDENTIFIER", "REV_MAX" AS "REV_MAX", "REV_MIN" AS "REV_MIN", "REV_CREATE" AS "REV_CREATE", "PHYSICAL_RESOURCE" AS "PHYSICAL_RESOURCE", "ANNOTATIONS" AS "ANNOTATIONS", "NAME" AS "NAME", "DESCR" AS "DESCR", "DEFAULT_ID" AS "DEFAULT_ID", "MODULE_TYPE" AS "MODULE_TYPE", "MODULE_ID" AS "MODULE_ID" FROM "FAST_LIST" WHERE ("REV_MAX" >= ?) AND ("REV_MAX" < ?) ORDER BY "BRANCH" ASC, "IDENTIFIER" ASC, "REV_MAX" ASC [42122-210]: SELECT "BRANCH" AS "BRANCH", "IDENTIFIER" AS "IDENTIFIER", "REV_MAX" AS "REV_MAX", "REV_MIN" AS "REV_MIN", "REV_CREATE" AS "REV_CREATE", "PHYSICAL_RESOURCE" AS "PHYSICAL_RESOURCE", "ANNOTATIONS" AS "ANNOTATIONS", "NAME" AS "NAME", "DESCR" AS "DESCR", "DEFAULT_ID" AS "DEFAULT_ID", "MODULE_TYPE" AS "MODULE_TYPE", "MODULE_ID" AS "MODULE_ID" FROM "FAST_LIST" WHERE ("REV_MAX" >= ?) AND ("REV_MAX" < ?) ORDER BY "BRANCH" ASC, "IDENTIFIER" ASC, "REV_MAX" ASC at com.top_logic.basic.sql.SQLH.enhanceMessage(SQLH.java:592) at com.top_logic.basic.db.sql.PrepStmtBasedCompiledStatement.enhanceMessage(PrepStmtBasedCompiledStatement.java:142) at com.top_logic.basic.db.sql.PrepStmtBasedCompiledStatement.executeQuery(PrepStmtBasedCompiledStatement.java:55) at com.top_logic.knowledge.service.db2.MultipleItemQuery.query(MultipleItemQuery.java:112) at com.top_logic.knowledge.service.db2.ItemEventReader.findNextRowType(ItemEventReader.java:340) at com.top_logic.knowledge.service.db2.ItemEventReader.findNextRowAttributes(ItemEventReader.java:293) at com.top_logic.knowledge.service.db2.ItemEventReader.findNextEvent(ItemEventReader.java:560) at com.top_logic.knowledge.service.db2.ItemEventReader.readEvent(ItemEventReader.java:479) ... 105 more Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Feld "MODULE_TYPE" nicht gefunden Column "MODULE_TYPE" not found; SQL statement: SELECT "BRANCH" AS "BRANCH", "IDENTIFIER" AS "IDENTIFIER", "REV_MAX" AS "REV_MAX", "REV_MIN" AS "REV_MIN", "REV_CREATE" AS "REV_CREATE", "PHYSICAL_RESOURCE" AS "PHYSICAL_RESOURCE", "ANNOTATIONS" AS "ANNOTATIONS", "NAME" AS "NAME", "DESCR" AS "DESCR", "DEFAULT_ID" AS "DEFAULT_ID", "MODULE_TYPE" AS "MODULE_TYPE", "MODULE_ID" AS "MODULE_ID" FROM "FAST_LIST" WHERE ("REV_MAX" >= ?) AND ("REV_MAX" < ?) ORDER BY "BRANCH" ASC, "IDENTIFIER" ASC, "REV_MAX" ASC [42122-210] at org.h2.message.DbException.getJdbcSQLException(DbException.java:521) at org.h2.message.DbException.getJdbcSQLException(DbException.java:496) at org.h2.message.DbException.get(DbException.java:227) at org.h2.message.DbException.get(DbException.java:203) at org.h2.expression.ExpressionColumn.getColumnException(ExpressionColumn.java:248) at org.h2.expression.ExpressionColumn.optimizeOther(ExpressionColumn.java:230) at org.h2.expression.ExpressionColumn.optimize(ExpressionColumn.java:213) at org.h2.expression.Alias.optimize(Alias.java:52) at org.h2.command.query.Select.prepare(Select.java:1177) at org.h2.command.Parser.prepareCommand(Parser.java:557) at org.h2.engine.SessionLocal.prepareLocal(SessionLocal.java:615) at org.h2.engine.SessionLocal.prepareCommand(SessionLocal.java:553) at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1116) at org.h2.jdbc.JdbcPreparedStatement.<init>(JdbcPreparedStatement.java:92) at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:639) at com.top_logic.basic.sql.ConnectionProxy.prepareStatement(ConnectionProxy.java:202) at com.top_logic.basic.sql.ConnectionProxy.prepareStatement(ConnectionProxy.java:202) at com.top_logic.basic.db.sql.ConfiguredCompiledStatement.prepareStatement(ConfiguredCompiledStatement.java:62) at com.top_logic.basic.db.sql.PrepStmtBasedCompiledStatement.tryExecuteQuery(PrepStmtBasedCompiledStatement.java:62) at com.top_logic.basic.db.sql.PrepStmtBasedCompiledStatement.executeQuery(PrepStmtBasedCompiledStatement.java:53) ... 110 more
== Test Kein Test