2016-07-29 4 views
0

以前はこの類似のトピックを見ましたが、解決はありませんでした。Liquibaseはchangelogを生成しましたXML - ERROR cvc-complex-type.2.3はSQL Serverの移行に使用されました

http://forum.liquibase.org/topic/liquibase-validation-can-we-turn-it-off

問題はSQL Server上の「移行」を使用して発生した検証エラーです。同じファイルを使用して、PostgreSQLでスキーマを作成することができます。なぜSQL Serverに問題がありますか?変更ログはSQL Serverから生成されましたが、同じホスト上の別のデータベースにスキーマを移行するためには使用できません。

助けてください!

エラーのショートバージョンはこれです...

cvc-complex-type.2.3: Element 'createTable' cannot have character [children], because the type's content type is element-only

フルスタックトレースがこれです...

SEVERE 7/27/16 6:14 PM: liquibase: cvc-complex-type.2.3: Element 'createTable' cannot have character [children], because the type's content type is element-only. liquibase.exception.ChangeLogParseException: Error parsing line 144 column 23 of mssql-confluencetest-changelog.xml: cvc-complex-type.2.3: Element 'createTable' cannot have character [children], because the type's content type is element-only. 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:229) at liquibase.Liquibase.update(Liquibase.java:202) at liquibase.Liquibase.update(Liquibase.java:192) at liquibase.integration.commandline.Main.doMigration(Main.java:1126) at liquibase.integration.commandline.Main.run(Main.java:184) at liquibase.integration.commandline.Main.main(Main.java:103) Caused by: org.xml.sax.SAXParseException; lineNumber: 144; columnNumber: 23; cvc-complex-type.2.3: Element 'createTable' cannot have character [children], because the type's content type is element-only. at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:198) at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:134) at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:437) at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:368) at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:325) at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator$XSIErrorReporter.reportError(XMLSchemaValidator.java:458) at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.reportSchemaError(XMLSchemaValidator.java:3237) at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.elementLocallyValidComplexType(XMLSchemaValidator.java:3200) at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.elementLocallyValidType(XMLSchemaValidator.java:3160) at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.processElementContent(XMLSchemaValidator.java:3062) at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleEndElement(XMLSchemaValidator.java:2140) at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.endElement(XMLSchemaValidator.java:859) at com.sun.org.apache.xerces.internal.impl.XML11NSDocumentScannerImpl.scanEndElement(XML11NSDocumentScannerImpl.java:814) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2973) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606) at com.sun.org.apache.xerces.internal.impl.XML11NSDocumentScannerImpl.next(XML11NSDocumentScannerImpl.java:857) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213) at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:648) at liquibase.parser.core.xml.XMLChangeLogSAXParser.parseToNode(XMLChangeLogSAXParser.java:106) ... 7 more

これは、問題のXMLです...

<changeSet author="amartin (generated)" id="1469664903727-11" objectQuotingStrategy="QUOTE_ALL_OBJECTS"> 
<createTable tableName="AO_5FB9D7_AOHIP_CHAT_LINK"> 
    <column name="ADDON_TOKEN_EXPIRY" type="datetime"/> 
    <column name="API_URL" type="nvarchar(255)"/> 
    <column name="CONNECT_DESCRIPTOR" type="ntext"/> 
    <column defaultValueNumeric="0" name="GROUP_ID" type="int"/> 
    <column name="GROUP_NAME" type="nvarchar(255)"/> 
    <column autoIncrement="true" name="ID" type="int"> 
     <constraints primaryKey="true" primaryKeyName="pk_AO_5FB9D7_AOHIP_CHAT_LINK_ID"/> 
    </column> 
    <column name="OAUTH_ID" type="nvarchar(255)"/> 
    <column name="SECRET_KEY" type="nvarchar(255)"/> 
    <column name="SYSTEM_PASSWORD" type="nvarchar(255)"/> 
    <column name="SYSTEM_TOKEN_EXPIRY" type="datetime"/> 
    <column name="SYSTEM_USER" type="nvarchar(255)"/> 
    <column name="SYSTEM_USER_TOKEN" type="nvarchar(255)"/> 
    <column name="TOKEN" type="nvarchar(255)"/> 
</createTable> 
</changeSet> 

答えて

0

標準ASCII文字セットの外にある変更履歴には、いくつかの文字が含まれることがあります。特に、私は、外部ファイルとして参照されるストアドプロシージャに「中括弧」などのものがあったときにこれが起こるのを見てきました。また、スタックトレースで参照されている行/列が実際の問題のある文字ではない場合もあります。

変更ログXMLのヘッダーを確認し、エンコードの内容を確認します。通常はUTF-8です。サポートファイルのエンコードをチェックするには、Notepad ++のようなツールを使用します。

+0

返信いただきありがとうございます!私はNotepad ++でこれをチェックしました。同じファイル内の他のテーブルと比較して、このテーブルの外観は変わりません。私はそれを引き出すと、それは正常に動作します。最も興味深いのは、この同じファイルをPostgreSQLにエラーなしで移行できることです。 – adrock

+0

私はASCII以外の文字の行番号を私に与える 'grep -P" [\ x80- \ xFF] "'も試しました。これは結果を返しません。 – adrock

+0

番号144の行はどれですか?問題のキャラクターを特定してみてください。どのxsdファイルをXMLで使用していますか? – orikosaki

0

同じエラーが発生し、自分の* .xmlファイルをいくつかの小さなファイルに分割して修正しました。

1

私は同じエラーがあります:java 1.7_55、Centos OS、およびliquibase 3.5.3を使用しています。

Java 1.7_80にアップデートすることで問題は解決します。

0

私はちょうど同じ問題に遭遇しました。

  • 上位Javaバージョンへのアップグレードはオプションではありませんでした。
  • 小さなファイルに分割しても機能しませんでした。
  • ファイルは、this answerとしてUTF-8で正しくエンコードされています。

では、私が唯一の1.1から1.0へのXMLのバージョンを変更しなければならなかったが判明:Liquibase forumsで見つけ
<?xml version="1.0" encoding="UTF-8"?>

ソリューションを。

関連する問題