【发布时间】:2015-10-27 23:15:27
【问题描述】:
使用 Vertica 7.1 和 flyway 3.2.1 创建函数时出现错误,甚至尝试了文档中的示例。几乎就像它不会忽略第一个';' :
.sql 文件中的代码
CREATE or replace FUNCTION default_to_hello(x VARCHAR) RETURN VARCHAR
AS BEGIN
-- The body of a SQL function in Vertica must be in the form 'RETURN expression'
RETURN (CASE WHEN (x IS NOT NULL) THEN x ELSE 'Hello' END);
END;
报告错误:
Current version of schema "public": 2
Migrating schema "public" to version 3 - test
ERROR: Migration of schema "public" to version 3 failed! Please restore backups and roll back database and code!
ERROR:
Migration V3__test.sql failed
-----------------------------
SQL State : 42601
Error Code : 4856
Message : [Vertica][VJDBC](4856) ERROR: Syntax error at or near "EOL"
Location : /opt/flywaydb/sql/V3__test.sql (/opt/flywaydb/sql/V3__test.sql)
Line : 1
Statement : CREATE or replace FUNCTION default_to_hello(x VARCHAR) RETURN VARCHAR
AS BEGIN
-- The body of a SQL function in Vertica must be in the form 'RETURN expression'
RETURN (CASE WHEN (x IS NOT NULL) THEN x ELSE 'Hello' END)
有其他人发生过这种情况还是我错过了什么?
【问题讨论】:
-
看起来它可能缺乏对“OR REPLACE”选项的支持,删除它并且它工作正常。
-
您确定它需要进入
public架构吗?您是否尝试过在 Vertica 中手动运行它? -
这只是一个沙盒测试,使用数据库管理员帐户针对公共模式进行测试。该脚本在 vertica 中运行良好,但 flyway 目前似乎不支持“或替换”选项。
-
@blitzkriegva Flyway 将更改合并到 4.0 里程碑,当然您可以将补丁移植到当前版本。