liquibase.exception.ChangeLogParseException: Error parsing line 46 column 326 of cl1.xml: cvc-complex-type.3.2.2: Attribute 'referencesUniqueColumn' is not allowed to appear in element 'addForeignKeyConstraint'.

JIRA | Paul Mendelson | 3 years ago
  1. 0

    Liquibase Update Failed

    Stack Overflow | 4 years ago
    liquibase.exception.ChangeLogParseException: Error parsing line 1 column 1 of dat abase.xml: Content is not allowed in prolog.
  2. Speed up your debug routine!

    Automated exception search integrated into your IDE

  3. 0

    I encountered this by accident when I went to add a branch of Liquibase to my Jenkins CI server. A bunch of the unit tests fail when there are spaces in the absolute file path to change logs. The test that is failing is the {{XMLChangeLogSAXParser_RealFile_Test}} class. While I don't like spaces in file paths they are a technical possibility an therefore need to be supported. I have also re-created it on my Mac. I haven't had a chance to test it on my Windows machine but I figure it will happen there as well. Here is the stack trace on the Mac: {noformat} liquibase.exception.ChangeLogParseException: liquibase.exception.SetupException: /Users/matt/dev/testing 123/liquibase/liquibase-core/target/test-classes/liquibase/parser/core/xml/included/included.changelog1.xml does not exist at liquibase.parser.core.xml.AbstractChangeLogParser.parse(AbstractChangeLogParser.java:27) at liquibase.parser.core.xml.XMLChangeLogSAXParser_RealFile_Test.changeSets with one level of includes parse correctly(XMLChangeLogSAXParser_RealFile_Test.groovy:205) Caused by: liquibase.exception.SetupException: /Users/matt/dev/testing 123/liquibase/liquibase-core/target/test-classes/liquibase/parser/core/xml/included/included.changelog1.xml does not exist at liquibase.changelog.DatabaseChangeLog.includeAll(DatabaseChangeLog.java:266) at liquibase.changelog.DatabaseChangeLog.handleChildNode(DatabaseChangeLog.java:221) at liquibase.changelog.DatabaseChangeLog.load(DatabaseChangeLog.java:193) at liquibase.parser.core.xml.AbstractChangeLogParser.parse(AbstractChangeLogParser.java:25) ... 1 more Caused by: liquibase.exception.ChangeLogParseException: /Users/matt/dev/testing 123/liquibase/liquibase-core/target/test-classes/liquibase/parser/core/xml/included/included.changelog1.xml does not exist at liquibase.parser.core.xml.XMLChangeLogSAXParser.parseToNode(XMLChangeLogSAXParser.java:95) at liquibase.parser.core.xml.AbstractChangeLogParser.parse(AbstractChangeLogParser.java:17) at liquibase.changelog.DatabaseChangeLog.include(DatabaseChangeLog.java:288) at liquibase.changelog.DatabaseChangeLog.includeAll(DatabaseChangeLog.java:263) ... 4 more {noformat} I believe the issue to be that file paths with spaces are URL encoded in Java and need to be decoded before using them in a {{java.io.File}} class. I was working on attempting to fix this. I started tracking down the bug and made a change in the {{AbstractResourceAccessor}} class {{convertToPath(String, String)}} method. I wrapped the {{baseUrl.getPath()}} call with a {{URLDecoder.decode()}} method. {code:java} if (baseUrl.toExternalForm().startsWith("file:")) { File baseFile = new File(baseUrl.getPath()); // Wrap getPath() in URLDecoder.decode() if (!baseFile.exists()) { throw new UnexpectedLiquibaseException("Base file '"+baseFile.getAbsolutePath()+"' does not exist"); } if (baseFile.isFile()) { baseFile = baseFile.getParentFile(); } return convertToPath(baseFile.toURI().getPath()+"/"+path); } {code} I think that eliminated the first stack trace but the unit tests still fail with two different but similar stacktraces: {noformat} liquibase.exception.ChangeLogParseException: liquibase.exception.SetupException: /Users/matt/dev/testing 123/liquibase/liquibase-core/target/test-classes/liquibase/parser/core/xml/included/included.changelog1.xml does not exist at liquibase.parser.core.xml.AbstractChangeLogParser.parse(AbstractChangeLogParser.java:27) at liquibase.parser.core.xml.XMLChangeLogSAXParser_RealFile_Test.changeSets with one level of includes parse correctly(XMLChangeLogSAXParser_RealFile_Test.groovy:205) Caused by: liquibase.exception.SetupException: /Users/matt/dev/testing 123/liquibase/liquibase-core/target/test-classes/liquibase/parser/core/xml/included/included.changelog1.xml does not exist at liquibase.changelog.DatabaseChangeLog.includeAll(DatabaseChangeLog.java:266) at liquibase.changelog.DatabaseChangeLog.handleChildNode(DatabaseChangeLog.java:221) at liquibase.changelog.DatabaseChangeLog.load(DatabaseChangeLog.java:193) at liquibase.parser.core.xml.AbstractChangeLogParser.parse(AbstractChangeLogParser.java:25) ... 1 more Caused by: liquibase.exception.ChangeLogParseException: /Users/matt/dev/testing 123/liquibase/liquibase-core/target/test-classes/liquibase/parser/core/xml/included/included.changelog1.xml does not exist at liquibase.parser.core.xml.XMLChangeLogSAXParser.parseToNode(XMLChangeLogSAXParser.java:95) at liquibase.parser.core.xml.AbstractChangeLogParser.parse(AbstractChangeLogParser.java:17) at liquibase.changelog.DatabaseChangeLog.include(DatabaseChangeLog.java:288) at liquibase.changelog.DatabaseChangeLog.includeAll(DatabaseChangeLog.java:263) ... 4 more {noformat} and: {noformat} liquibase.exception.ChangeLogParseException: liquibase.exception.SetupException: Could not find directory or directory was empty for includeAll 'included/' at liquibase.parser.core.xml.AbstractChangeLogParser.parse(AbstractChangeLogParser.java:27) at liquibase.parser.core.xml.XMLChangeLogSAXParser_RealFile_Test.changeSets with one level of includes parse correctly(XMLChangeLogSAXParser_RealFile_Test.groovy:205) Caused by: liquibase.exception.SetupException: Could not find directory or directory was empty for includeAll 'included/' at liquibase.changelog.DatabaseChangeLog.includeAll(DatabaseChangeLog.java:266) at liquibase.changelog.DatabaseChangeLog.handleChildNode(DatabaseChangeLog.java:221) at liquibase.changelog.DatabaseChangeLog.load(DatabaseChangeLog.java:193) at liquibase.parser.core.xml.AbstractChangeLogParser.parse(AbstractChangeLogParser.java:25) ... 1 more Caused by: liquibase.exception.SetupException: Could not find directory or directory was empty for includeAll 'included/' at liquibase.changelog.DatabaseChangeLog.includeAll(DatabaseChangeLog.java:259) ... 4 more {noformat} I'm still looking into it but I figured I would file the ticket with the hope that you might have more information as to a solution (or know how to fix it quicker than me :-) ).

    JIRA | 3 years ago | Matt Bertolini
    liquibase.exception.ChangeLogParseException: liquibase.exception.SetupException: /Users/matt/dev/testing 123/liquibase/liquibase-core/target/test-classes/liquibase/parser/core/xml/included/included.changelog1.xml does not exist
  4. 0

    The documentation (http://www.liquibase.org/documentation/xml_format.html) says: {quote} Liquibase Extension XSDs If you use a Liquibase extension that includes additional change tags, check the extension documentation to find out if they provide a XSD. If they do not, you can use the xsd at http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd which allows any nested tag and attribute.{quote} Custom XSDs are very handy in order to use auto-complete in XML editors. However, when I actually try to use one for Oracle Extensions (https://raw.githubusercontent.com/liquibase/liquibase-oracle/master/src/main/java/liquibase/ext/ora/xml/dbchangelog-ext.xsd), Liquibase fails: DEBUG 4/14/16 10:49 AM: liquibase: Local path for https://raw.githubusercontent.com/liquibase/liquibase-oracle/master/src/main/java/liquibase/ext/ora/xml/dbchangelog-ext.xsd is null DEBUG 4/14/16 10:49 AM: liquibase: Attempting to load https://raw.githubusercontent.com/liquibase/liquibase-oracle/master/src/main/java/liquibase/ext/ora/xml/dbchangelog-ext.xsd from resourceAccessor as sql/Release-Migration/https:/raw.githubusercontent.com/liquibase/liquibase-oracle/master/src/main/java/liquibase/ext/ora/xml/dbchangelog-ext.xsd DEBUG 4/14/16 10:49 AM: liquibase: Could not load https://raw.githubusercontent.com/liquibase/liquibase-oracle/master/src/main/java/liquibase/ext/ora/xml/dbchangelog-ext.xsd from resourceAccessor as sql/Release-Migration/https:/raw.githubusercontent.com/liquibase/liquibase-oracle/master/src/main/java/liquibase/ext/ora/xml/dbchangelog-ext.xsd DEBUG 4/14/16 10:49 AM: liquibase: Unable to resolve XML entity locally. Will load from network. SEVERE 4/14/16 10:49 AM: liquibase: src-resolve: Cannot resolve the name 'MaterializedViewRefreshType' to a(n) 'type definition' component. DEBUG 4/14/16 10:49 AM: liquibase: Release Database Lock DEBUG 4/14/16 10:49 AM: liquibase: Executing UPDATE database command: UPDATE LINK_OD_IREPORT.DATABASECHANGELOGLOCK SET LOCKED = 0, LOCKEDBY = NULL, LOCKGRANTED = NULL WHERE ID = 1 INFO 4/14/16 10:49 AM: liquibase: Successfully released change log lock Unexpected error running Liquibase: src-resolve: Cannot resolve the name 'MaterializedViewRefreshType' to a(n) 'type definition' component. SEVERE 4/14/16 10:49 AM: liquibase: src-resolve: Cannot resolve the name 'MaterializedViewRefreshType' to a(n) 'type definition' component. liquibase.exception.ChangeLogParseException: Error parsing line 205 column 100 of sql/Release-Migration/Release-Delta.xml: src-resolve: Cannot resolve the name 'MaterializedViewRefreshType' to a(n) 'type definition' component. at liquibase.parser.core.xml.XMLChangeLogSAXParser.parseToNode(XMLChangeLogSAXParser.java:114) at liquibase.parser.core.xml.AbstractChangeLogParser.parse(AbstractChangeLogParser.java:17) at liquibase.Liquibase.getDatabaseChangeLog(Liquibase.java:227)}} I'm attaching the extracted test case.

    JIRA | 8 months ago | Dmitriy Korobskiy
    liquibase.exception.ChangeLogParseException: Error parsing line 205 column 100 of sql/Release-Migration/Release-Delta.xml: src-resolve: Cannot resolve the name 'MaterializedViewRefreshType' to a(n) 'type definition' component.

    Not finding the right solution?
    Take a tour to get the most out of Samebug.

    Tired of useless tips?

    Automated exception search integrated into your IDE

    Root Cause Analysis

    1. liquibase.exception.ChangeLogParseException

      Error parsing line 46 column 326 of cl1.xml: cvc-complex-type.3.2.2: Attribute 'referencesUniqueColumn' is not allowed to appear in element 'addForeignKeyConstraint'.

      at liquibase.parser.core.xml.XMLChangeLogSAXParser.parse()
    2. Liquibase Core
      Liquibase.rollback
      1. liquibase.parser.core.xml.XMLChangeLogSAXParser.parse(XMLChangeLogSAXParser.java:107)
      2. liquibase.Liquibase.rollback(Liquibase.java:271)
      3. liquibase.Liquibase.rollback(Liquibase.java:253)
      3 frames