在使用新迁移运行Spring应用程序时,我得到了这个错误。到目前为止,它已经成功地进行了10次迁移。该字段实际上没有默认值。不应该需要默认设置,因为Flyway应该在该字段中插入值11。
Caused by: org.flywaydb.core.internal.exception.FlywaySqlException:
Unable to insert row for version '11' in Schema History table `app`.`schema_version`
--------------------------------------------------------------------------------------------
SQL State : HY000
Error Code : 1364
Message : Field 'version_rank' doesn't have a default value
at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.doAddAppliedMigration(JdbcTableSchemaHistory.java:174) ~[flyway-core-5.1.4.jar:na]
at org.flywaydb.core.internal.schemahistory.SchemaHistory.addAppliedMigration(SchemaHistory.java:170) ~[flyway-core-5.1.4.jar:na]
at org.flywaydb.core.internal.command.DbMigrate.applyMigrations(DbMigrate.java:299) ~[flyway-core-5.1.4.jar:na]
at org.flywaydb.core.internal.command.DbMigrate.migrateGroup(DbMigrate.java:244) ~[flyway-core-5.1.4.jar:na]
at org.flywaydb.core.internal.command.DbMigrate.access$100(DbMigrate.java:53) ~[flyway-core-5.1.4.jar:na]
at org.flywaydb.core.internal.command.DbMigrate$2.call(DbMigrate.java:163) ~[flyway-core-5.1.4.jar:na]
at org.flywaydb.core.internal.command.DbMigrate$2.call(DbMigrate.java:160) ~[flyway-core-5.1.4.jar:na]
at org.flywaydb.core.internal.database.mysql.MySQLNamedLockTemplate.execute(MySQLNamedLockTemplate.java:60) ~[flyway-core-5.1.4.jar:na]
at org.flywaydb.core.internal.database.mysql.MySQLConnection.lock(MySQLConnection.java:80) ~[flyway-core-5.1.4.jar:na]
at org.flywaydb.core.internal.schemahistory.JdbcTableSchemaHistory.lock(JdbcTableSchemaHistory.java:150) ~[flyway-core-5.1.4.jar:na]pom.xml
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>5.1.4</version><!--$NO-MVN-MAN-VER$-->
</dependency>application.properties
# Prevent complaints when starting migrations with existing tables.
flyway.baselineOnMigrate = true
flyway.table=schema_versionschema_version
| Field | Type | Null | Key | Default | Extra |
+----------------+---------------+------+-----+-------------------+-------+
| version_rank | int(11) | NO | MUL | NULL | |
| installed_rank | int(11) | NO | MUL | NULL | |
| version | varchar(50) | NO | PRI | NULL | |
| description | varchar(200) | NO | | NULL | |
| type | varchar(20) | NO | | NULL | |
| script | varchar(1000) | NO | | NULL | |
| checksum | int(11) | YES | | NULL | |
| installed_by | varchar(100) | NO | | NULL | |
| installed_on | timestamp | NO | | CURRENT_TIMESTAMP | |
| execution_time | int(11) | NO | | NULL | |
| success | tinyint(1) | NO | MUL | NULL | |如果迁移甚至不起作用,我将如何创建迁移以添加默认值?
飞道5.1.4,Spring 5.1.13,mysql 15.1远端10.1.30-MariaDB,用于CYGWIN (i686)
发布于 2018-10-02 13:51:36
看起来,如果您从Flyway 3.x直接升级到5.x,绕过4.x,就会出现这个问题。
Spring 1.5默认使用Flyway 3.x,而SpringBoot2.x使用Flyway 5.x。
对于用户从Flyway 3.x升级的重要注意事项:此版本不再支持从Flyway 3.x升级架构历史表。您必须先升级到Flyway 4.2.0,然后再升级到Flyway 5.0.0。
升级到Spring 2将使天桥从3.x升级到5.x。为了确保模式升级顺利进行,请遵循以下说明:
迁移指南还通过另一种方法链接到博客文章。
有人提出了关于弹簧启动跳过天桥4.x的问题,还有一个反对秩异常的问题。
看来其他很多人也遇到了同样的问题。
发布于 2018-10-02 03:32:05
不得不
schema_version
mvn天桥:-Dflyway.user=user -Dflyway.password= -Dflyway.url=jdbc:mysql://localhost:3306/app -Dflyway.table=schema_versionschema_version表中,这样它就不会再在开发中抱怨了
更新schema_version集校验和= -1275756780,其中版本= 11;希望它只在阶段和生产中起作用。
也许FlyWay应该使用Rails迁移来管理自己的模式?
我知道DB版本控制是一个很难解决的问题,FlyWay应该使它更容易,但有时感觉它比仅仅使用自定义的SQL脚本或手动部署检查表要做的更多。我找不到任何提到这个问题的地方,我最后一次移民是在7月底左右。也许现在每个人都已经停止使用它了?我从5月份就开始使用它了,并且遇到了很多问题(表名更改,校验和计算更改,现在是这个)。
https://stackoverflow.com/questions/52600527
复制相似问题