Oracle Flyway init()作为同义词时无法升级架构_版本

Oracle Flyway init()作为同义词时无法升级架构_版本,oracle,flyway,Oracle,Flyway,在某些方面,类似于。我们的控制安全性和DBA组已经为对象(表、视图、sp){owner}规定了一个Oracle模式,并通过同义词{user}规定了一个访问模式。大多数应用程序可能都可以使用交换机上下文,但除了前面提到的使我蒙蔽的策略之外,在大多数Java JPA访问中还存在一些遗留的PL/SQL用法。所有者无权访问用户架构。用户可以创建同义词 还没有考虑过编写自定义Java代码-尝试在mvn命令行之外进行开箱即用 因此,我对所有者模式运行了Flyway 2.2 init(),然后立即创建了一个名

在某些方面,类似于。我们的控制安全性和DBA组已经为对象(表、视图、sp){owner}规定了一个Oracle模式,并通过同义词{user}规定了一个访问模式。大多数应用程序可能都可以使用交换机上下文,但除了前面提到的使我蒙蔽的策略之外,在大多数Java JPA访问中还存在一些遗留的PL/SQL用法。所有者无权访问用户架构。用户可以创建同义词

还没有考虑过编写自定义Java代码-尝试在mvn命令行之外进行开箱即用

因此,我对所有者模式运行了Flyway 2.2 init(),然后立即创建了一个名为
schema\u VERSION\u USER
的副本。(大写以避免Oracle(10g)引起同义词问题。)

手动将同义词
SCHEMA\u VERSION\u USER
创建到
Owner.SCHEMA\u VERSION\u USER

执行

mvn compile flyway:migrate -Dflyway.user=USER -Dflyway.table=SCHEMA_VERSION_USER
但是收到

[INFO] Upgrading the metadata table "USER"."SCHEMA_VERSION_USER" to the Flyway 2.0 format...
[INFO] Checking prerequisites...
[ERROR] com.googlecode.flyway.core.api.FlywayException: Unable to upgrade the metadata table "USER"."SCHEMA_
VERSION_USER" to the Flyway 2.0 format
[ERROR] Caused by java.sql.SQLException: ORA-00904: "DESCRIPTION": invalid identifier

[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Flyway Error: com.googlecode.flyway.core.api.FlywayException: Unable to upgrade the metadata table "USER"."SCHEMA_VERSION_USER" to the Flyway 2.0 format

ORA-00904: "DESCRIPTION": invalid identifier
当我尝试将表限定为
-Dflyway.table=USER.SCHEMA\u VERSION\u USER
时,它失败了

[ERROR] com.googlecode.flyway.core.api.FlywayException: Found non-empty schema "USER" without metadata table! Use init() first to initialize the metadata table.
这是缺陷吗;精心设计;没有想到;积压我是否需要让DBA以系统DBA的身份执行所有操作以避免许可问题?我们不希望这样做,因为这会限制我们在所有环境中使用它们,而不仅仅是prod,我们正在尝试引入“自动化”连续交付。或者让他们在用户模式中手动创建
schema\u version
表,以避免初始升级检查?我是否必须编写java来绕过初始升级检查

贴子:我们试图让他们接受一些现代的DB自动化工具——他们以前只接受定制的手动控制脚本,这是维护的噩梦


谢谢

这是一个到目前为止还没有出现的情况。升级代码假定它是一个表,并希望确保从Flyway 1.x顺利迁移。此时无法绕过它


在用户的模式中创建表应该可以解决这个问题。可以使用flyway.schemas属性指定创建表的模式。该表将在列表的第一个表中创建。

这也是我工作时遇到的问题。我们有一个MD和应用程序用户。应用程序用户无法创建表,并且不允许MD用户创建任何表。因此,我们确实需要应用程序用户的FlywayDb版本表成为MD用户表的同义词。自从两年前提出这个问题以来,有人在这方面做过任何工作吗?

在运行comand时使用-Dflyway.schemas=OWNER。

谢谢Alex。我们会这样做的。