问题标签 [flyway]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
5229 浏览

mysql - Flyway MySQL 语法错误

我们从 1 个月开始使用 Flyway,没有遇到任何问题。

但是,今天我尝试添加一个非常长(超过 1500 行)的新迁移脚本,并遇到了一个奇怪的 MySQL 语法错误。

我在 MySQL Workbench 中打开了这个脚本,没有报告语法错误,脚本执行没有错误。

这个名为“V10012__insert-acceptance-testing-event-moment-passed.sql”的脚本包含以下说明。

  • 插入语句 1
  • 插入语句 2
  • ...
  • INSERT 语句 LAST - 1
  • INSERT 语句最后

MySQL报告的错误如下:

[ERROR] 由 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException 引起:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 232 行 [ERROR] com.googlecode.flyway.core. migration.MigrationException: 迁移到版本 10012 失败!请恢复备份并回滚数据库和代码!

该错误在“INSERT statement LAST”语句中报告。

但是,如果我在脚本中反转“INSERT 语句 LAST”和“INSERT 语句 LAST - 1”,则会在“INSERT 语句 LAST - 1”(现在位于文件末尾)上报告错误。所以我在“INSERT statement LAST”中没有错误,因为 Flyway 成功执行了它。

此外,如果现在我从脚本“V10012_insert-acceptance-testing-event-moment-passed.sql”中完全删除“INSERT statement LAST”语句,并将该语句放入一个名为“V10013 _test.sql”的新文件中,flyway 执行我所有的迁移脚本都成功了!

那么,我最初的“V10012__insert-acceptance-testing-event-moment-passed.sql”脚本中可能存在什么问题?

是否有可能的脚本大小限制?

以下是有关我的环境的有用信息:

  • 我的脚本使用了很多 /* */ 注释
  • Flyway Maven 插件 1.7
  • Maven 2.0.3
  • mysql:mysql-connector-java:5.1.21
  • MySQL 5.5.X
  • Java JDK 1.7.0_09-b05
  • Windows 7的
0 投票
0 回答
475 浏览

java - Flyway:Oracle db 迁移不适用于 flyway 1.6 和 1.7

将不胜感激任何线索。

在 init() 上创建表模式版本之后,调用 migrate() 方法时出现以下异常(对于 sql 和 java 迁移)。

com.googlecode.flyway.core.exception.FlywayException:无法在 com.googlecode.flyway.core.metadatatable.MetaDataTable.lock(MetaDataTable.java:146)的架构“XXX”中锁定元数据表“schema_version”

...

原因:java.sql.SQLException:SQL 字符串不是 oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3584) 的 oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1263) 的 DML 语句在 oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3665) 在 oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1352) 在 com.googlecode.flyway.core.util.jdbc.JdbcTemplate.update (JdbcTemplate.java:260) 在 com.googlecode.flyway.core.dbsupport.oracle.OracleDbSupport.lockTable(OracleDbSupport.java:76) 在 com.googlecode.flyway.core.metadatatable.MetaDataTable.lock(MetaDataTable.java:144 ) ... 61 更多

谢谢。

0 投票
1 回答
506 浏览

database - 使用个人用户帐户执行 flyway 迁移

作为我们将 SQL 脚本迁移到 flyway 迁移工作的一部分,我们遇到了一些大量使用 Oracle sqlplusCONNECT语句的脚本。不幸的是,删除它们并使用具有所需权限的用户(例如SYSTEM)不是一种选择。

我们现在想知道是否有一种优雅的方式来使用不同的帐户执行单个迁移?如果支持这一点,围绕CONNECT语句拆分脚本可能会导致我们问题的优雅解决方案。

其他人如何处理需要不同帐户的数据库迁移?

0 投票
1 回答
3326 浏览

grails - Flyway 对 Groovy 迁移和条件环境特定数据插入的支持

我们正在开发一个 Grails 项目,并探索 Flyway 作为我们的数据库迁移工具。

在我们当前的架构中,我们依赖 Groovy 迁移脚本(在应用程序启动时执行)来进行条件环境特定的数据插入(例如,针对同一表中的 'other-data' 的生产,在 'tableA' 中使用 'some-data'表 A' 用于预生产)。

Q1。Flyway 是否支持 Groovy 迁移脚本?

Q2。如果不是,那么我们如何才能最好地实现有条件的特定于环境的数据插入?

0 投票
0 回答
2255 浏览

mysql - flyway 在 MySQL 上执行“alter table ...修改`col`auto_increment”但不更改`col`值

当我从 MySQL 命令行或 Workbench 执行这些句子时...

...我得到的是一个新列id,其中填充了从 1 到 N 的自动增量值。

但是当我从flyway执行它时,该列id的每一行都有一个零,因为最后一句不会改变它的值。

你知道为什么吗?

除了使用过程插入这些值之外,还有什么解决方案/解决方法吗?

谢谢!

费兰

0 投票
1 回答
244 浏览

flyway - 我可以只使用flyway的解析器吗

我只想使用flyway的解析器来解析SQL脚本并通过JDBC执行它们。目前我自己做了一个简单的解析器来完成这项工作。但仅限于我迄今为止遇到的情况。我想使用 flyway 解析器,因为我认为它更复杂。有没有办法使用一些飞行类来实现这一点?

0 投票
4 回答
2845 浏览

mysql - 如何使用十六进制(blob)内容生成 SQL 插入,例如 Flyway 迁移脚本

如何为例如 Flyway 迁移脚本生成具有十六进制 (blob) 内容的 SQL 插入。

我可以在编辑器中打开二进制内容,例如使用十六进制模式的 UltraEdit。但是,找不到将这些内容复制并粘贴到我的 SQL 编辑器(例如 MySQL Workbench)的方法。我可以复制几个字节,但我需要的文件大约是 60k 到 100k。

建议请任何人?

0 投票
0 回答
812 浏览

mysql - 迁移到控制台或日志的详细输出

我环顾四周,但似乎无法找到答案。

我们的 DBA 希望看到 flyway 调用的 sql 迁移的输出。

以 mysql 为例:

输出给出:

在甲骨文中:

输出将类似于:

有没有人能够解决这个问题,或者有人能指出我正确的方向吗?

感谢您可能有的任何想法。

0 投票
2 回答
605 浏览

java - Flyway - 不复制sql资源

我在我的 java web 项目中使用 flyway。

我的迁移放在 src/main/resources/db/migration

现在我想从目标战争中排除 sql 资源,所以我添加到我的 pom.xml:

但是随后 flyway 不起作用,因为从目标中获取迁移。

那么我如何使用 flyway 但避免将 sql 复制到我的战争中呢?

0 投票
2 回答
4777 浏览

java - Flyway 在使用 Ant 时无法在类路径上找到 Spring Java 迁移

我在我的项目中设置了 Flyway,具有以下目录布局(不包括不相关的目录):

以及 build.xml 的相关部分(flyway.url 和 flyway.driver 设置在此处未包含的属性文件中---Flyway 与数据库对话没有问题):

这是在编译目标中创建的迁移 JAR 的布局:

这是来自的输出flyway:info

Flyway 没有发现 .class 文件。我在这里做错了什么?

编辑:如果有人知道使用 Ant(没有 Maven,没有 Ivy)设置 Flyway 的工作示例,将不胜感激。


更新

事实证明 Flyway 会找到JdbcMigration课程,但不会SpringJdbcMigration

此迁移已成功加载:

但是这个被跳过了:

这是使用 a 时的 Ant 调试输出SpringJdbcMigration