我有一个Oracle 11 XE数据库,其中包含3个模式,我想创建一个DDL文件,以使基线脚本与Flyway一起使用. 我尝试仅导出所有3个模式的DDL,但是生成的SQL不包括用户的创建或表空间的创建.它只是从SQL开始创建桌子,因为用户或表格不存在,该表不起作用. 有什么方法可以与SQL-Developer一起执行此操作,还是我在此处使用错误的工具? 我认为我可能需要在DDL中包含所有系统对象,但是不知道将其导入运行的Oracle实例是否有效. 我要感谢的任何提示或提示,我开始认为这个计划是不可能的. : - ( 谢谢 马特 解决方案 当我们生成用于架构的DDL时,我们抓住了模式对象,而不是拥有模式的用户的定义,也不是架构中使用的表空间 您仍然可以得到这些,只需打开DBA面板 -
以下是关于 flyway 的编程技术问答
我试图用Flyway 4.2.0 + Oracle 11g 实现DB迁移 我有这个空的模式: 当我尝试迁移时,Flyway说: 由:org.flywaydb.core.api.FlywayException引起:发现非空 架构" PASHA"没有元数据!使用baseline()或设置 baselineOnMigrate to true初始化元数据表. 这是配置: @Bean(initMethod = "migrate") Flyway flyway() { Flyway flyway = new Flyway(); flyway.setBaselineOnMigrate(false); flyway.setSchemas("PASHA"); flyway.setLocations("classpath:db/migration/oracle"); flyway.setDataSource("jdbc:oracle:thi
我正在尝试使用Flyway修复方法从带有Spring Boot配置的模式版本删除失败的迁移条目.我的代码就是这样; @Bean public FlywayMigrationStrategy repairStrategy() { return flyway -> { flyway.repair(); flyway.migrate(); }; } 但是,运行后,它会引发这样的错误(即使评论迁移操作,维修操作也会失败); Error while retrieving the list of applied migrations from Schema History table SQL State : 72000 Error Code : 12838 Message : ORA-12838: cannot read/modify an object after modifying it in parallel 您
我正在尝试使用Flyway,但是我有一个不知道如何解决的情况: 应用标准脚本时,我必须运行v1.0__create_table_tab1.sql 当我将脚本应用于Customer1时,TAB1表是一个视图,因此我必须运行v1.0__create_view_tab1_to_schema1.sql. 实际上: └── sql ├── sql_common │ ├── V0.0 __.... sql │ └── V1.0__create_table_TAB1.sql ├── sql_customer1 │ └── V1.0__create_view_TAB1_to_schema1.sql └── sql_customer2 └── V1.0__create_view_TAB1_to_schema2.sql 应始终应用SQL_Common文件夹的脚本,但是如果我不应应用v1.0(Cre
我真的很努力地了解如何使用Flyway管理Oracle数据库. 所讨论的数据库具有3个模式. 如果我在Gradle文件中的Flyway插件定义中规定了3个模式,我该如何管理用户自己的创建以及它们使用的表空间? 任何提示或建议都将受到欢迎. 为飞速的基线创建DDL 解决方案 如果您将使用一些有限的超级用户帐户创建DB,则可以使用它来创建用户和表格,并具有单独的Flyway迁移实例.那就是: 超级用户从sql/db-configuration/使用专用flyway.conf迁移的飞速迁移 创建用户,表格和所有其他配置 使用专用flyway.conf从sql/app-code/ flyway迁移 常规申请代码
我尝试在迁移之前和迁移脚本之后添加作为回调,以编译我的观点,过程,功能等. 是否有可能在迁移过程之前停止它或在脚本失败之前或之后有回滚(或者返回警告)? 因为我现在唯一看到的是我收到这样的警告 [警告] DB:警告:执行使用警告(SQL状态:99999-错误代码:17110) 它继续,不停止. 我考虑了FlywayCallback界面及其实现,但我不确定如何完成编译. 我使用的是最新飞行的Spring Boot 1.2.5. 解决方案 我也有同样的错误. SQL State: 99999 - Error Code: 17110.我找到了这个解决方案. 检查此警告下的哪个版本和SQL脚本检查下的该版本具有触发器或任何未正确关闭的过程. 如果触发器的结尾oracle db / 关闭触发器或任何过程. ex: CREATE OR REPLACE TRIGGER Print_salary_changes BEFORE DELETE OR I
我使用Flyway和H2数据库在执行以下脚本时遇到问题.我认为它是一个甲骨文兼容性问题,但我正在使用正确模式的H2.该脚本用于在生产中构造我的表格,但我想使用内存数据库进行测试.设置和错误下面.如果可能的话,我不希望重写内存数据库的脚本. jdbc.properties jdbc.driver=org.h2.Driver jdbc.url=jdbc:h2:file:target/firmsoftDB;MODE=Oracle jdbc.username=sa jdbc.password= SQL脚本 CREATE TABLE USER_INFO ( USER_INFO_ID NUMBER NOT NULL, USER_NAME VARCHAR2(32 BYTE) NOT NULL, EMAIL VARCHAR2(320 BYTE)
我们在代码库中引入了飞行.以前,我们在公共模式中存储了Postgres函数,我们使用它来复制租户模式以创建与租户模式相同结构的新模式.回购代码如下: @Repository public interface TenantRepository extends JpaRepository { @Query(nativeQuery = true, value = "SELECT clone_schema(:defaultSchema,:newSchema,:isCopyData);") String callCloneSchema(@Param("defaultSchema") String defaultSchema, @Param("newSchema") String newSchema,@Param("isCopyData") boolean isCopyData); } 我想删除这些功能,并希望使用Flyway创建新的模
我创建了一个连接到DB并进行一些检查的Javaexec任务.在我的flyway build.gradle中,我将其称为这样的任务: flywayMigrate.finalizedBy(rootProject.checkOracleStandards) 任务正常,但是问题是连接URL,用户和密码是连接到数据库并进行检查的程序中的硬编码.我想将它们传递给args的自定义任务. 如何在Flywaymigrate之后使用Args运行自定义任务? 这就是我的任务Gradle文件的样子: apply plugin: 'java' dependencies { implementation rootProject.files("libs/check-oracle-db-standards-1.jar") implementation group: 'com.oracle.database.jdbc', name: 'ojdbc8', version: '
我们将Flyway与AWS RDS MySQL和RedShift实例一起使用,并且运行良好!我们正在考虑从RDS MySQL切换到RDS Aurora.亚马逊说,Aurora是MySQL兼容的,但想知道Aurora和Flyway之间是否有任何已知的不兼容? 解决方案 基于 Amazon Aurora旨在与MySQL 5.6兼容,因此现有的MySQL应用程序和工具可以运行而无需修改. 鉴于您是从MySQL数据库迁移的,您甚至不需要更改Flyway配置的JDBC驱动程序.我已经与AWS Aurora一起使用Flyway已有一段时间了,但还没有注意到任何问题. 其他解决方案 我不熟悉飞行,但这是使用Aurora的主要限制: Aurora仅支持InnoDB存储引擎(不支持Myisam),因此您的数据库应与之兼容.例如,这意味着最大尺寸限制为16kb. 不支持地理空间索引
我想知道如何从使用暴露ORM创建的表中生成SQL脚本迁移.这对我非常有帮助,因为我可以在稍后使用Flyway应用迁移. 我将JDK 16与Kotlin一起使用. 因此,这里的主要问题是:是否有任何工具可以帮助我创建这些迁移脚本? 解决方案 您可以使用SchemaUtils.createStatements()从表定义生成DDL. println(SchemaUtils.createStatements(Cities, Users).joinToString("\n\n") { "$it;" } schemautils.kt https://github.com/JetBrains/Exposed/blob/621dc5b939b03c0f2396073c17f7ab5a7022816c/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/SchemaUtils.kt#L93 不幸的是,我找不到任
我试图执行飞行迁移以删除全文索引,但不能在迁移内运行: DROP FULLTEXT INDEX ON BusinessEntity 它引发错误: 消息:删除全文索引语句不能在用户交易中使用. 我从 documentation : 飞行在单独的交易中运行每个迁移. 我很有趣,有什么方法可以在迁移外运行SQL代码或以某种方式将其关闭? 解决方案 这个问题已经下一个版本, 5.2.0 应该解决. 与此同时,您可以从源头构建 更新2019-01-03 版本5.2.0发行了一段时间. 我已经创建了一个 reposority 以使用Flyway复制错误5.1.4-或至少由于存在相同的潜在问题而在CREATE FULLTEXT INDEX上失败.将版本更改为5.2.0可以解决问题,如预期的.
将飞行从5.2.4升级后 compile group: 'org.flywaydb', name: 'flyway-core', version: '6.5.0' 并运行Spring Boot应用程序,我收到了错误: Unsatisfied dependency expressed through method 'mapDao' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration$FlywayConfiguration': Unexpected exception during bean creation; nested exception i
我有一个带有Spring Boot 2.2.0,H2和Flyway的项目. Spring Boot 2.2.1刚刚出来(所以我得到了一个Disperabot PR),现在我的迁移失败了(路径/表名称/列,已清理): org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flywayInitializer' defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Invocation of init method failed; nested exception is org.flywaydb.core.internal.command.DbMigrate$Fly
我将通过Flyway SQL脚本重命名MySQL 8.0表: RENAME TABLE aaa TO bbb; 它应该在Env上多次运行 - 但是,此脚本不是愿意的,试图第二次运行它,我会发现错误: SQL State : 42S01 Error Code : 1050 Message : Table 'bbb' already exists Location : db/migration/V7__blabla.sql (/usr/local/...) Line : 1 Statement : RENAME TABLE aaa TO bbb 有人可以建议如何处理吗? 非常感谢! 解决方案 IF EXISTS 使用IF EXISTS子句.如果找不到这样的表格,则命令停止,没有效果. ALTER TABLE IF EXISTS name RENAME TO new_name ; 这个其他解决方案 您应该考虑多种情
如何管理处理相同DB模式的多个项目.每个项目中每个项目都不允许启动的飞行迁移脚本. 例如: 我有一个带有FlywayInitializer类的Spring Boot Project X. @PostConstruct public void migrateFlyway() { final Flyway flyway = new Flyway(); flyway.setSchemas("schema1"); flyway.setLocations("classpath:x.migration"); flyway.migrate(); } 我和他自己的FlywayInializer class 有一个suppoule项目y @PostConstruct public void migrateFlyway() { final Flyway flyway
我想在SQL Server数据库上导入一些数据,我正在使用Spring Boot 2.3.4.我还使用冬眠来生成桌子. 我在POM中添加了Flyway Core: org.flywaydb flyway-core 创建了配置文件: import org.flywaydb.core.Flyway; import org.springframework.boot.autoconfigure.flyway.FlywayMigrationInitializer; import org.springframework.boot.autoconfigure.flyway.FlywayMigrationStrategy; import org.springframework.context.anno
是否可以通过在yaml中编写的多个弹簧启动配置文件中组合相同元素的列表? 示例: postgres.yml包含我的Postgres DB信息.它还包含我的迁移脚本的飞行位置: --- flyway: locations: - flyway/migrations/postgres 与我的Oracle迁移相同: --- flyway: locations: - flyway/migrations/oracle 现在,如果我想使用test-data启动我的应用程序,我也想包括我的test_data目录(postgres和oracle的这些数据工作): --- flyway: locations: - flyway/test_data 当我使用Active配置文件运行应用程序postgres,testdata时,迁移未加载,因为Test-Data-File的位置条目被覆盖. . 对于此设置,我可以创建四个配置文
我正在尝试使用Maven在"生产支持"分支(即v3.1)上应用外货迁移. 3.1分支有12个迁移3.1.0.1至3.1.0.12.前11个已应用,在我的开发环境中,我从已应用的下一个版本3.3中进行了两次迁移.该信息看起来像这样: +----------------+----------------------------+---------------------+---------+ | Version | Description | Installed on | State | +----------------+----------------------------+---------------------+---------+ | 1 | > | 2013-08-16 16:35:22 | Success | | 3.1.0.1 | CCI DDL