Liqubase PostgreSQL创建函数 [英] liquibase postgresql creating functions
本文介绍了Liqubase PostgreSQL创建函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
<?xml version="1.0" encoding="UTF-8"?>
<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.1.xsd">
<changeSet id="1" author="yc14ik1">
<createProcedure catalogName="cat" dbms="postgresql"
encoding="utf8" procedureName="UPDATE_LAST_ROW_CHG_TS()" relativeToChangelogFile="true" schemaName="sub">
CREATE OR REPLACE FUNCTION UPDATE_LAST_ROW_CHG_TS() RETURNS trigger
LANGUAGE plpgsql
AS $$
BEGIN
NEW.LAST_ROW_CHG_TS = NOW();
RETURN NEW;
END;
$$;
</createProcedure>
<sql></sql>
</changeSet>
在Jenkins作业中执行此过程时,我收到此错误
Unexpected error running Liquibase: ERROR: language "plpgsql" does not exist
Hint: Use CREATE LANGUAGE to load the language into the database. [Failed SQL: CREATE OR REPLACE FUNCTION UPDATE_LAST_ROW_CHG_TS() RETURNS trigger
LANGUAGE plpgsql
AS $$
BEGIN
NEW.LAST_ROW_CHG_TS = NOW();
RETURN NEW;
END;
$$;]
Build step 'Execute shell' marked build as failure
Notifying upstream projects of job completion
Warning: you have no plugins providing access control for builds, so falling back to legacy behavior of permitting any downstream builds to be triggered
有人能帮助我吗?我如何解决此问题?
推荐答案
我的设置不同,它工作正常。
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd">
<changeSet author="l" id="UPDATE_LAST_ROW_CHG_TS" runOnChange="true">
<createProcedure catalogName="UPDATE_LAST_ROW_CHG_TS"
dbms="postgresql"
encoding="utf8"
path="../files/UPDATE_LAST_ROW_CHG_TS.sql"
procedureName="UPDATE_LAST_ROW_CHG_TS"
relativeToChangelogFile="true"
schemaName="public"></createProcedure>
</changeSet>
</databaseChangeLog>
从那里,您将所有的SQL放入一个在Path属性中引用的.sql文件中。
我不知道你的方法会不会奏效,但对我来说,你在底部有空标签似乎很奇怪。也许您的意思是让它们包装您的SQL函数?
我知道,如果配置并运行正确,上面的示例将会正常工作。
这篇关于Liqubase PostgreSQL创建函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文