以前はこの類似のトピックを見ましたが、解決はありませんでした。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>
返信いただきありがとうございます!私はNotepad ++でこれをチェックしました。同じファイル内の他のテーブルと比較して、このテーブルの外観は変わりません。私はそれを引き出すと、それは正常に動作します。最も興味深いのは、この同じファイルをPostgreSQLにエラーなしで移行できることです。 – adrock
私はASCII以外の文字の行番号を私に与える 'grep -P" [\ x80- \ xFF] "'も試しました。これは結果を返しません。 – adrock
番号144の行はどれですか?問題のキャラクターを特定してみてください。どのxsdファイルをXMLで使用していますか? – orikosaki