【发布时间】:2021-10-14 02:42:50
【问题描述】:
我有以下疑问:
UPDATE user
SET user_status = 'ACCEPTED', last_updated = now()
FROM company
WHERE user.company_id::text = company.company_id::text
AND company.status = 'ACTIVE';
查询直接在数据库中运行时工作正常,但在将其作为 flyway 迁移脚本应用时出现以下错误:
Caused by: org.flywaydb.core.internal.sqlscript.FlywaySqlScriptException:
Migration XXXXX.sql failed
---------------------------------------------------------------------------
SQL State : 42000
Error Code : 42000
Message : Syntax error in SQL statement "UPDATE USER
SET USER_STATUS = 'ACCEPTED', LAST_UPDATED = NOW()
FROM[*] COMPANY
WHERE USER.COMPANY_ID::TEXT = COMPANY.COMPANY_ID::TEXT
AND COMPANY.STATUS = 'ACTIVE'";
该错误表明FROM 存在问题。但是,我已经阅读了 Postgres 文档并查看了示例查询,语法与我上面使用的相同,并且似乎是正确的。
Flyway 版本:7.0.2
Postgres 版本:9.6
Postgres JDBC 驱动版本:42.2.14
谁能帮我弄清楚我为什么会遇到这个问题/帮我解决这个问题?
【问题讨论】:
-
@forpas。不,请参阅Error codes。
-
什么版本的 Flyway 和什么版本的 Postgres?添加为问题的更新。另请阅读此处UPDATE 的兼容性部分,了解有关
FROM子句的说明。 -
@AdrianKlaver 正确,但对于有效的 Postgresql 语句,该错误是不可理解的。 FROM 子句上的此错误将在不支持 UPDATE ... FROM 语法的 MySql(和其他)中抛出。
-
检查你的 postgres 错误日志,它应该有 flyway 使用的实际查询。
-
我会说这是你需要向 Flyway 的人提出的问题。
标签: postgresql flyway