我正在尝试标记数据库以供将来回滚使用但得到以下错误:
将更新应用于数据库。这可能需要几分钟的时间 ... 运行Liquibase时出现意外错误:解析ppsdb / ebidb_lb_upgrade_c43_sql_1.xml的第12行第6行时出错:cvc-complex-type.2.4.a:找到以element' sql'开头的无效内容。其中一个{" http://www.liquibase.org/xml/ns/dbchangelog/1.9":modifySql}'预计。
这是我的changeSet文件:
cat ebidb_lb_upgrade_c43_sql_1.xml
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog/1.9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog/1.9
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-1.9.xsd">
<changeSet author="avnish_plsql_upgrade" id="1">
<tagDatabase tag="version_1.3"/>
<sql
stripComments="false"
>
create table test (id number);
</sql>
</changeSet>
</databaseChangeLog>
当我从文件中删除tagDatabase标记时,我没有收到任何错误。 只有当我添加此标记时,我才会遇到错误。 如果我在这里遗漏任何事情或犯错误,请告诉我。
答案 0 :(得分:0)
我认为问题可能是您使用的是非常过时的xsd。在XML文件的标头中,将1.9
的所有实例替换为3.6
以下是我最近的一个环境中的示例:
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
答案 1 :(得分:0)
我一直面临同样的问题。在没有任何喘息的情况下搜索了一会儿之后,我决定看看XSD,看看元素的声明方式。
根据Liquibase documentation link,最新版本的XSD为3.1。
如果您查看3.1 XSD,您可以看到tagDatabase
和其他changeSet
允许的元素是互斥的(它们是XSD的一部分:CHOICE)
<xsd:choice>
<xsd:element ref="tagDatabase" maxOccurs="1"/>
<xsd:group ref="changeSetChildren" minOccurs="0" maxOccurs="unbounded"/>
</xsd:choice>
为了测试我的理论,我创建了一个只有changeSet
元素的新tagDatabase
,并且可以看到迁移成功,但很明显第二个changSet
是唯一标记了该版本的$('#search').on('input', function(e) {
var resultElement = $('#stock'),
requestData = $(this).val();
// Make request to rest API
$.ajax({
url: 'https://www.alphavantage.co/query?function=BATCH_STOCK_QUOTES&symbols=' + requestData + '&apikey=SB1CZMKQ6Q5283QZ',
method: 'get',
data: {
symbols: requestData
},
dataType: 'json',
success: function(data) {
console.log(data);
resultElement.html('price:' + data["Stock Quotes"][0]["2. price"])
}
});
});
标签。
所以现在,我将对DATABASECHANGELOG表进行数据更新以更新标记列。
我希望liquibase家伙推出一款新的XSD来解决这个问题。