2014-03-12 75 views
0

我正在使用SQL Server 2012和liquibase版本2.0.1来支持Java应用程序(java版本1.7)中的数据库更新。liquibase迁移2.x到3.0的问题

我要迁移liquibase版本3.x和我正在帮助来自liquibase site

它说Liquibase 3.0.0是一个下拉更换任何Liquibase 2.0.x的版本。

当我与依赖随着3.0.0版本罐子代替现有的版本,我得到在日志下面的错误 -

Liquibase updateSQL Failed: liquibase/database/structure/type/DataType 

详细的错误:

INFO 3/12/14 3:02 PM:liquibase: Successfully acquired change log lock 
INFO 3/12/14 3:02 PM:liquibase: Successfully released change log lock 
INFO 3/12/14 3:02 PM:liquibase: Successfully released change log lock 
SEVERE 3/12/14 3:02 PM:liquibase: liquibase/database/structure/type/DataType 
java.lang.NoClassDefFoundError: liquibase/database/structure/type/DataType 
      at java.lang.Class.forName0(Native Method) 
      at java.lang.Class.forName(Class.java:264) 
      at liquibase.change.custom.CustomChangeWrapper.setClass(CustomChangeWrapper.java:84) 
      at liquibase.parser.core.xml.XMLChangeLogSAXHandler.setProperty(XMLChangeLogSAXHandler.java:585) 
      at liquibase.parser.core.xml.XMLChangeLogSAXHandler.setAllProperties(XMLChangeLogSAXHandler.java:517) 
      at liquibase.parser.core.xml.XMLChangeLogSAXHandler.startElement(XMLChangeLogSAXHandler.java:405) 
      at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:506) 
      at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.startElement(XMLSchemaValidator.java:744) 
      at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:376) 
      at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2717) 
      at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:607) 
      at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:116) 
      at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:489) 
      at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:835) 
      at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764) 
      at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123) 
      at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1210) 
      at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:568) 
      at liquibase.parser.core.xml.XMLChangeLogSAXParser.parse(XMLChangeLogSAXParser.java:101) 
      at liquibase.parser.core.xml.XMLChangeLogSAXHandler.handleIncludedChangeLog(XMLChangeLogSAXHandler.java:561) 
      at liquibase.parser.core.xml.XMLChangeLogSAXHandler.startElement(XMLChangeLogSAXHandler.java:164) 
      at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:506) 
      at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:182) 
      at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.emptyElement(XMLSchemaValidator.java:775) 
      at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:353) 
      at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2717) 
      at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:607) 
      at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:116) 
      at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:489) 
      at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:835) 
      at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764) 
      at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123) 
      at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1210) 
      at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:568) 
      at liquibase.parser.core.xml.XMLChangeLogSAXParser.parse(XMLChangeLogSAXParser.java:101) 
      at liquibase.Liquibase.getDatabaseChangeLog(Liquibase.java:216) 
      at liquibase.Liquibase.update(Liquibase.java:194) 
      at liquibase.Liquibase.update(Liquibase.java:253) 
      at liquibase.Liquibase.update(Liquibase.java:236) 
      at liquibase.integration.commandline.Main.doMigration(Main.java:894) 
      at liquibase.integration.commandline.Main.main(Main.java:133) 
Caused by: java.lang.ClassNotFoundException: liquibase.database.structure.type.DataType 
      at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
      at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
      at java.security.AccessController.doPrivileged(Native Method) 
      at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
      at java.lang.ClassLoader.loadClass(ClassLoader.java:423) 
      at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
      at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
      ... 41 more 
+1

你在通过命令行调用liquibase吗?试试'--version'标志。我的猜测是,有些东西混在一起,所以你仍然称你的liquibase的旧版本,但是没有在类路径中的版本(也许有新版本?) – Jens

+0

@Jens:是的,我打电话给它从命令行。让我试试--version标志。 – Harshit

回答

1

3.0是一个从更新日志结构的角度来看,他们没有取代,但是有一些突破了基础Java API的变化,这就是为什么版本从2.x跳到3.x.

http://www.liquibase.org/v3_upgrade.html列出了一些更改,但是您的特定问题似乎是您有一个类正在使用liquibase.database.structure.type.DataType对象,该对象已移至3.0中的liquibase.structure.core.DataType。

如果您针对liquibase 3.0重新编译自定义更改类,编译器应该会发现此更改以及其他任何API更改。

+0

是的,有一个类正在使用liquibase.database.structure.type.IntType,重新编译标识这个的解决方案。谢谢 – Harshit