- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 flyway 1.5 和 mysql Ver 14.14 Distrib 5.1.52,用于使用 readline 5.1 的 unknown-linux-gnu (x86_64)
我编写了以下迁移:
alter table table1 add column col_11 blob;
alter table table1 add column col_12 varchar(255) DEFAULT NULL;
alter table table2 add column col_21 blob;
alter table table2 add column col_22 varchar(255) DEFAULT NULL;
其中 table1
很小,table2
有 283,018 行。
迁移成功(列被添加到 table1
和 table2
)但是版本更新失败(我得到了 com.mysql.jdbc. exceptions.jdbc4.MySQLNonTransientConnectionException:连接关闭后不允许进行任何操作。
)。
我的 my.cnf
文件包含下一行 wait_timeout=30
我认为发生的事情是将这两列添加到 table2
花费了超过 wait_timout
- 这导致迁移“失败” - 现在我遇到了这种情况:迁移成功但版本未更新。但后来我运行了这个 sql 查询:
show variables like "%timeout%";
得到这个:
+----------------------------+-------+
| Variable_name | Value |
+----------------------------+-------+
| connect_timeout | 10 |
| delayed_insert_timeout | 300 |
| innodb_lock_wait_timeout | 50 |
| innodb_rollback_on_timeout | OFF |
| interactive_timeout | 28800 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| slave_net_timeout | 3600 |
| table_lock_wait_timeout | 50 |
| wait_timeout | 28800 |
+----------------------------+-------+
这表明 wait_timeout
大约为 8 小时...
所以我的问题是为什么会出现此连接超时?
主要是 - 我该如何修复它?
编辑:应用程序和数据库都在同一台机器上。
这是完整的堆栈跟踪:
Current schema version: 12.9.3
Migrating to version 12.9.3.1
Error while extracting database product name - falling back to empty error codes
org.springframework.jdbc.support.MetaDataAccessException: Error while extracting DatabaseMetaData; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.
at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:296)
at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:320)
at org.springframework.jdbc.support.SQLErrorCodesFactory.getErrorCodes(SQLErrorCodesFactory.java:216)
at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.setDataSource(SQLErrorCodeSQLExceptionTranslator.java:140)
at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.<init>(SQLErrorCodeSQLExceptionTranslator.java:103)
at org.springframework.jdbc.support.JdbcAccessor.getExceptionTranslator(JdbcAccessor.java:99)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:407)
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:522)
at com.googlecode.flyway.core.metadatatable.MetaDataTable.insert(MetaDataTable.java:149)
at com.googlecode.flyway.core.migration.DbMigrator.applyMigration(DbMigrator.java:248)
at com.googlecode.flyway.core.migration.DbMigrator$1.doInTransaction(DbMigrator.java:148)
at com.googlecode.flyway.core.migration.DbMigrator$1.doInTransaction(DbMigrator.java:114)
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:128)
at com.googlecode.flyway.core.migration.DbMigrator.migrate(DbMigrator.java:113)
at com.googlecode.flyway.core.Flyway.migrate(Flyway.java:619)
at com.googlecode.flyway.commandline.Main.main(Main.java:79)
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.Util.getInstance(Util.java:386)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1013)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
at com.mysql.jdbc.ConnectionImpl.throwConnectionClosedException(ConnectionImpl.java:1205)
at com.mysql.jdbc.ConnectionImpl.checkClosed(ConnectionImpl.java:1197)
at com.mysql.jdbc.ConnectionImpl.getMetaData(ConnectionImpl.java:3061)
at com.mysql.jdbc.ConnectionImpl.getMetaData(ConnectionImpl.java:3056)
at org.springfra
mework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:285)
... 15 more
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet successfully received from the server was 654,699 milliseconds ago. The last packet sent successfully to the server was 17 milliseconds ago.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116)
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3102)
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2991)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3532)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2002)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2163)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2618)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1749)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1666)
at org.springframework.jdbc.core.JdbcTemplate$1UpdateStatementCallback.doInStatement(JdbcTemplate.java:512)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:396)
... 9 more
Caused by: java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2552)
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3002)
... 18 more
Application exception overridden by rollback exception
org.springframework.dao.RecoverableDataAccessException: StatementCallback; SQL [UPDATE schema_version SET current_version=0]; Communications link failure
The last packet successfully received from the server was 654,699 milliseconds ago. The last packet sent successfully to the server was 17 milliseconds ago.; nested exception is com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet successfully received from the server was 654,699 milliseconds ago. The last packet sent successfully to the server was 17 milliseconds ago.
at org.springframework.jdbc.support.SQLExceptionSubclassTranslator.doTranslate(SQLExceptionSubclassTranslator.java:97)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:407)
at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:522)
at com.googlecode.flyway.core.metadatatable.MetaDataTable.insert(MetaDataTable.java:149)
at com.googlecode.flyway.core.migration.DbMigrator.applyMigration(DbMigrator.java:248)
at com.googlecode.flyway.core.migration.DbMigrator$1.doInTransaction(DbMigrator.java:148)
at com.googlecode.flyway.core.migration.DbMigrator$1.doInTransaction(DbMigrator.java:114)
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:128)
at com.googlecode.flyway.core.migration.DbMigrator.migrate(DbMigrator.java:113)
at com.googlecode.flyway.core.Flyway.migrate(Flyway.java:619)
at com.googlecode.flyway.commandline.Main.main(Main.java:79)
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet successfully received from the server was 654,699 milliseconds ago. The last packet sent successfully to the server was 17 milliseconds ago.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116)
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3102)
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2991)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3532)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2002)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2163)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2618)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1749)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1666)
at org.springframework.jdbc.core.JdbcTemplate$1UpdateStatementCallback.doInStatement(JdbcTemplate.java:512)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:396)
... 9 more
Caused by: java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:2552)
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3002)
... 18 more
FlywayException: Migration failed !
Occured in com.googlecode.flyway.core.migration.DbMigrator in method migrate, line number 164
Caused by java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
Occured in com.mysql.jdbc.MysqlIO in method readFully, line number 2552
最佳答案
我们刚刚遇到了这个问题,并设法找到了适合我们的解决方案。似乎 Flyway 至少使用了两个连接:一个用于锁定 schema_version
表,一个用于实际运行 alters。当更改花费足够长的时间导致连接锁定 schema_version
表超时时,就会出现此问题。解决此问题的最简单方法是将 MySQL wait_timeout
设置为相对较大的值。在我们的例子中,我们将其设置为 480 分钟(或 28800 秒):
set global wait_timeout=28800;
关于mysql - flyway 连接超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12339164/
是 Flyway适合在支持多个数据库的应用程序中实现吗? 我们不知道我们的客户在使用什么——可能是 MySQL、Postgres 或 Oracle。我们还可以使用 Flyway 为新版本的应用程序迁移
只想知道正在使用 flyway 的人是否得到了这个 > 版本设置为 0。 它突然开始出现在我的元数据表上,我不确定它从哪里来,也不知道如何运行 mugrates 而不会再次出现 最佳答案 这意味着 f
大家好! :) 我一直在看 Flyway,但我不确定如何使用它。就我而言,我有一个实体模型(使用 JPA 进行注释),对我而言,每次调用“迁移”并生成迁移文件时,FlyWay 都可以找出模型上的更改,
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 4 年前。 Improve this ques
场景:我有两个数据库。 第一个数据库是用于测试的空白数据库。我基本上运行 flyway:migrate 并使用完整的模式构建数据库,然后针对该空白数据库运行我的集成测试。在运行测试之前插入集成测试所需
我刚刚遇到了以下情况: 测试服务器当前正在运行 Flyway,版本为 1 (V1)。每当在 develop 分支上推送任何内容时,测试服务器都会自动更新(包括 Flyway 脚本)。 开发人员决定开始
我有一个项目,其数据库由 Flyway 在严格验证模式下管理。 我的迁移文件如下所示: V1.0__init.sql V11.0__even_better.sql V2.0__update.sql V
我们从项目开始就没有使用过 Flyway。我们处于先进的发展状态。专家评审建议在我们的项目中使用 Flyway。 问题是我们也将部分服务(微服务)移到了另一个测试环境中。 正确实现 Flyway 的最
我正在评估在我的项目中使用的 Flyway。我们当前的 SQL 脚本包含诸如 URL 之类的占位符,这些占位符将根据环境(dev、qa、prod)具有不同的域名。 具体来说,我们可能有 INSERT
我有一个名为V1_7__a_and_c.sql的flyway迁移脚本,但我意识到它不是关于“a”和“c”,而是关于“a”和“b”,所以该文件的正确名称实际上是 V1_7__a_and_b.sql。 我
我已将产品交付给客户。现在我已经升级了产品,其中包括对数据库的更改。 客户想要升级产品。现在 Flyway 将帮助客户数据从旧版本迁移到新版本。如果这是一个有效的用例,请告诉我。 flyway 文档仅
flyway 是否支持每个环境有条件地执行脚本? 例如,如果我有测试数据,是否可以创建一个仅在 env 配置为测试时加载的测试数据脚本文件夹? 最佳答案 对于 future 的访问者,这是针对特定于数
如果 flyway 在运行时最终会执行任何迁移,我们的部署系统想知道,因为它需要执行一组不同于没有数据库迁移的操作(如果有迁移,那么集群中的所有服务器都被关闭,然后一台服务器启动并执行迁移,然后将其余
我遇到以下问题: org.flywaydb.core.api.FlywayException: Validate failed: Detected applied migration not reso
我一直在阅读一篇关于 Flyway 的博客文章,名为 Lessons Learned Using Flyway DB with Distributed Version Control .作者的建议之一
因此,由于某些要求,我在升级 flyway 版本后了解到,flyway-core-2.2 为 Flyway 占位符引入了一些验证。 现在,占位符语法的约定在大多数库中都是 ${name} 统一的。在我
因此,只是探索使用 flyway 使用 Athena 提供的 JDBC 驱动程序针对 Amazon Athena 维护我的 DDL 语句的可能性,Athena 仅支持 CREATE 语句(hive D
我已经成功配置了 spring boot 和一个可以工作的新项目带飞路 使用 Postgres 数据库从 0001.0 版本迁移到 0008.0 我已经在本地手动更改了脚本但是flyway 迁移失败。
我目前正在使用 Flyway 命令行工具来管理我们的脚本,这些脚本将通过我们的 CI 构建服务器触发的发布过程来调用。 问题是我有 274 个可重复的迁移,涵盖包规范、包主体、函数、过程、 View
在 Flyway 中,我无法使用定义精确有序的迁移脚本集的文件(类似于 Liquibase approach )。 除了实现我自己的 MigrationResolver 之外,还有其他方法吗? 最佳答
我是一名优秀的程序员,十分优秀!