我已经下载了oracle数据库EE的官方oracle docker映像。我有一个flyway配置,经常对本地安装的XE版本的数据库运行flyway:clean
。但是flyway告诉我,不允许清理docker映像中的数据库,但它可以迁移它。
有没有办法强制flyway清理甲骨文数据库?
回答评论中的问题:
以下是通过maven运行flyway时的错误消息:
org.flywaydb.core.api.FlywayException: Clean not supported on Oracle for system schema "SCHEMA_OWNER"! It must not be changed in any way except by running an Oracle-supplied script! -> [Help 1]
我连接的用户是在alter session set“\u ORACLE\u SCRIPT”=true的情况下创建的
如果当前架构被视为系统架构,Flyway将引发此异常:
@Override
protected void doClean() throws SQLException {
if (isSystem()) {
throw new FlywayException("Clean not supported on Oracle for system schema " + database.quote(name) + "! " +
"It must not be changed in any way except by running an Oracle-supplied script!");
}
如果模式在已知默认模式列表中,或者具有ORACLE_MAINTAINED='Y'
,则该模式被视为系统模式。
使用alter session set“\u ORACLE\u SCRIPT”=true创建用户
为用户/架构设置
ORACLE\u mainted='Y'
。
Oracle 12c中有两种数据库:数据库容器(CDB)和可插拔数据库(PDB)。这是为了支持多租户。
您当前正在CDB中创建用户,这将是所有PDB的公共用户。在这种情况下,您必须在用户名前加上
c#
:
create user c##scott identified by tiger;
或者使用
alter session set“\u ORACLE\u SCRIPT”=true
,否则将出现错误:
ORA-65096: invalid common user or role name in oracle
另一种选择是连接到PDB并在那里创建本地用户(不需要前缀,用户将只存在于该PDB中),例如:
sqlplus sys/Oradoc_db1@ORCLPDB1 as sysdba
create user scott identified by tiger;
更新Flyway url以作为该用户连接到该PDB:
-url=jdbc:oracle:thin:@oracle-ee:1521/orclpdb1.localdomain -user="scott" -password=tiger
问题内容: 有人可以为我指出一份良好的初学者指南,以安全地运行部分由用户输入构成的SQL查询吗?我正在使用Java,但是语言无关的指南也很好。 期望的行为是,如果有人在GUI中键入类似 数据库应将其视为文字字符串,并安全地存储它而不会删除任何表。 问题答案: 您肯定要使用PreparedStatement。他们很方便。这是一个例子。
我想手动删除已针对数据库成功运行的flyway迁移。这是最后一次迁移。 这行得通吗 > 从schema_version表中删除迁移项 还有什么我需要做的吗?
问题内容: 当我创建/调试docker映像/容器docker时,似乎在我的系统上留下了各种工件。(有一点限制为48张图像),但是我上次查看的图像为20-25张;。 因此,首要问题是: 如何正确清理? 当我手动删除图像时,更多的图像开始出现。嗯? 我应该为主机真正分配多少磁盘空间? 下次重启后,正在运行的守护程序会真正重启吗? 以及meta问题…我没有问过什么问题? 问题答案: 删除“晃来晃去”的图
问题:是否可以在迁移脚本中创建一个新的DB,然后连接到它?怎么做? 我的场景:我试图在我的Java项目(使用Jersey2.4+Tomcat7+PostgreSQL 9.3.1+EclipseLink的RESTful应用程序)中使用flyway来管理使用Git的不同开发人员之间的更改。我编写了我的init脚本并运行它: 而且效果很好。问题是我不能用我的脚本创建新的DB。当我在脚本中包含以下一行时:
问题内容: 有人可以给我一个SQL查询来帮助我清理此表吗?在清除locid(索引)后,应该重新设置,这是使用此查询的县城 。当我通过phpmyadmin的导入多次导入sql文本时,就会出现这种冗余数据,这就是结果, 问题答案: 在表位置添加唯一索引,这样就不会插入重复的记录 这将自动从表中删除重复的记录,对于以后的插入查询,您需要使用子句来避免出现重复的错误。 但正如注释中所建议的那样,它可能不适
问题内容: 我们有一个使用maven配置的Java应用程序,该应用程序使用多个数据库。这是一个应用程序-许多架构。 我已经配置了flyway,已经过测试,并且效果很好,但是我的配置仅适用于一个数据库。 这是我的pom.xml使用一种模式进行测试: 更新:通过使用现在提供的答案,我将以下pom.xml配置为2个模式。 我执行飞行操作,但没有成功,这是我收到的错误: 数据库配置正常。另外,我检查了架构