org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flywayInitializer'

huangapple go评论126阅读模式
英文:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flywayInitializer'

问题

以下是翻译好的内容:

在我的学习中,我遇到了关于 Flyway 的问题。我根据视频课程开始了项目,但在开始后,我注意到 Flyway 和 Spring 的版本已过时,于是在 pom.xml 中放入了另一个版本。我删除了创建的 category 表,然后 Flyway 显示了以下错误,当我尝试上传项目时:

  1. org.springframework.beans.factory.BeanCreationException: 在类路径资源 [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class] 中定义的名为 'flywayInitializer' Bean 创建出错:初始化方法的调用失败;嵌套异常是 org.flywaydb.core.api.FlywayException: 验证失败:
  2. 迁移版本 01 的校验和不匹配
  3. -> 已应用于数据库:1894708545
  4. -> 本地解决:-2070596035

Pom.xml 修改前:

  1. <!-- 在此插入原 pom.xml 的内容 -->

Pom.xml 修改后:

  1. <!-- 在此插入修改后的 pom.xml 的内容 -->

Myscript(我的脚本):

  1. CREATE TABLE categoria (
  2. id BIGINT(20) PRIMARY KEY AUTO_INCREMENT,
  3. nome VARCHAR(50) NOT NULL
  4. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  5. INSERT INTO categoria (nome) VALUES ('Lazer');
  6. INSERT INTO categoria (nome) VALUES ('Alimentação');
  7. INSERT INTO categoria (nome) VALUES ('Supermercado');
  8. INSERT INTO categoria (nome) VALUES ('Farmácia');
  9. INSERT INTO categoria (nome) VALUES ('Outros');

数据库中尚未创建表,并且 schema_version 中也没有记录,因为我也将其删除。为什么会出现错误?有人可以告诉我吗?

英文:

In my studies I had a problem with the flyway, I started the project according to the video lesson, but after starting I noticed that the versions of flyway and spring were out of date and put another version in the pom.xml Drope the created category table and the version e scheme flyway shows me this error when I try to upload the project.

  1. &gt; org.springframework.beans.factory.BeanCreationException: Error creating bean with name &#39;flywayInitializer&#39; defined in class path
  2. &gt; resource
  3. &gt; [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]:
  4. &gt; Invocation of init method failed; nested exception is
  5. &gt; org.flywaydb.core.api.FlywayException: Validate failed:
  6. &gt;
  7. &gt; Migration checksum mismatch for migration version 01
  8. &gt; -&gt; Applied to database : 1894708545
  9. &gt; -&gt; Resolved locally : -2070596035

Pom.xml before:

  1. &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
  2. &lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
  3. xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&gt;
  4. &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
  5. &lt;parent&gt;
  6. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  7. &lt;artifactId&gt;spring-boot-starter-parent&lt;/artifactId&gt;
  8. &lt;version&gt;1.5.3.RELEASE&lt;/version&gt;
  9. &lt;relativePath/&gt; &lt;!-- lookup parent from repository --&gt;
  10. &lt;/parent&gt;
  11. &lt;groupId&gt;com.algaworks.algamoney-api&lt;/groupId&gt;
  12. &lt;artifactId&gt;algamoney-api&lt;/artifactId&gt;
  13. &lt;version&gt;1.0.0-SNAPSHOT&lt;/version&gt;
  14. &lt;name&gt;algamoney-api&lt;/name&gt;
  15. &lt;description&gt;Demo project for Spring Boot&lt;/description&gt;
  16. &lt;properties&gt;
  17. &lt;java.version&gt;1.8&lt;/java.version&gt;
  18. &lt;/properties&gt;
  19. &lt;dependencies&gt;
  20. &lt;dependency&gt;
  21. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  22. &lt;artifactId&gt;spring-boot-starter-data-jpa&lt;/artifactId&gt;
  23. &lt;/dependency&gt;
  24. &lt;dependency&gt;
  25. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  26. &lt;artifactId&gt;spring-boot-starter-web&lt;/artifactId&gt;
  27. &lt;/dependency&gt;
  28. &lt;dependency&gt;
  29. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  30. &lt;artifactId&gt;spring-boot-devtools&lt;/artifactId&gt;
  31. &lt;scope&gt;runtime&lt;/scope&gt;
  32. &lt;optional&gt;true&lt;/optional&gt;
  33. &lt;/dependency&gt;
  34. &lt;dependency&gt;
  35. &lt;groupId&gt;mysql&lt;/groupId&gt;
  36. &lt;artifactId&gt;mysql-connector-java&lt;/artifactId&gt;
  37. &lt;scope&gt;runtime&lt;/scope&gt;
  38. &lt;/dependency&gt;
  39. &lt;dependency&gt;
  40. &lt;groupId&gt;org.flywaydb&lt;/groupId&gt;
  41. &lt;artifactId&gt;flyway-core&lt;/artifactId&gt;
  42. &lt;version&gt;3.2.1&lt;/version&gt;
  43. &lt;scope&gt;runtime&lt;/scope&gt;
  44. &lt;/dependency&gt;
  45. &lt;dependency&gt;
  46. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  47. &lt;artifactId&gt;spring-boot-starter-test&lt;/artifactId&gt;
  48. &lt;scope&gt;test&lt;/scope&gt;
  49. &lt;exclusions&gt;
  50. &lt;exclusion&gt;
  51. &lt;groupId&gt;org.junit.vintage&lt;/groupId&gt;
  52. &lt;artifactId&gt;junit-vintage-engine&lt;/artifactId&gt;
  53. &lt;/exclusion&gt;
  54. &lt;/exclusions&gt;
  55. &lt;/dependency&gt;
  56. &lt;/dependencies&gt;
  57. &lt;build&gt;
  58. &lt;plugins&gt;
  59. &lt;plugin&gt;
  60. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  61. &lt;artifactId&gt;spring-boot-maven-plugin&lt;/artifactId&gt;
  62. &lt;/plugin&gt;
  63. &lt;/plugins&gt;
  64. &lt;/build&gt;
  65. &lt;/project&gt;

Pom.xml after:

  1. &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
  2. &lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
  3. xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&gt;
  4. &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
  5. &lt;parent&gt;
  6. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  7. &lt;artifactId&gt;spring-boot-starter-parent&lt;/artifactId&gt;
  8. &lt;version&gt;2.3.1.RELEASE&lt;/version&gt;
  9. &lt;!-- &lt;packaging&gt;jar&lt;/packaging&gt; --&gt;
  10. &lt;relativePath/&gt; &lt;!-- lookup parent from repository --&gt;
  11. &lt;/parent&gt;
  12. &lt;groupId&gt;com.algaworks.algamoney-api&lt;/groupId&gt;
  13. &lt;artifactId&gt;algamoney-api&lt;/artifactId&gt;
  14. &lt;version&gt;1.0.0-SNAPSHOT&lt;/version&gt;
  15. &lt;name&gt;algamoney-api&lt;/name&gt;
  16. &lt;description&gt;Demo project for Spring Boot&lt;/description&gt;
  17. &lt;properties&gt;
  18. &lt;java.version&gt;1.8&lt;/java.version&gt;
  19. &lt;/properties&gt;
  20. &lt;dependencies&gt;
  21. &lt;dependency&gt;
  22. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  23. &lt;artifactId&gt;spring-boot-starter-data-jpa&lt;/artifactId&gt;
  24. &lt;/dependency&gt;
  25. &lt;dependency&gt;
  26. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  27. &lt;artifactId&gt;spring-boot-starter-web&lt;/artifactId&gt;
  28. &lt;/dependency&gt;
  29. &lt;dependency&gt;
  30. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  31. &lt;artifactId&gt;spring-boot-devtools&lt;/artifactId&gt;
  32. &lt;scope&gt;runtime&lt;/scope&gt;
  33. &lt;optional&gt;true&lt;/optional&gt;
  34. &lt;/dependency&gt;
  35. &lt;dependency&gt;
  36. &lt;groupId&gt;mysql&lt;/groupId&gt;
  37. &lt;artifactId&gt;mysql-connector-java&lt;/artifactId&gt;
  38. &lt;scope&gt;runtime&lt;/scope&gt;
  39. &lt;/dependency&gt;
  40. &lt;dependency&gt;
  41. &lt;groupId&gt;org.flywaydb&lt;/groupId&gt;
  42. &lt;artifactId&gt;flyway-core&lt;/artifactId&gt;
  43. &lt;version&gt;6.4.4&lt;/version&gt;
  44. &lt;scope&gt;runtime&lt;/scope&gt;
  45. &lt;/dependency&gt;
  46. &lt;dependency&gt;
  47. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  48. &lt;artifactId&gt;spring-boot-starter-test&lt;/artifactId&gt;
  49. &lt;scope&gt;test&lt;/scope&gt;
  50. &lt;exclusions&gt;
  51. &lt;exclusion&gt;
  52. &lt;groupId&gt;org.junit.vintage&lt;/groupId&gt;
  53. &lt;artifactId&gt;junit-vintage-engine&lt;/artifactId&gt;
  54. &lt;/exclusion&gt;
  55. &lt;/exclusions&gt;
  56. &lt;/dependency&gt;
  57. &lt;/dependencies&gt;
  58. &lt;build&gt;
  59. &lt;plugins&gt;
  60. &lt;plugin&gt;
  61. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  62. &lt;artifactId&gt;spring-boot-maven-plugin&lt;/artifactId&gt;
  63. &lt;/plugin&gt;
  64. &lt;/plugins&gt;
  65. &lt;/build&gt;
  66. &lt;/proje

ct>

Myscript:

  1. CREATE table categoria(
  2. id BIGINT(20) PRIMARY KEY AUTO_INCREMENT,
  3. nome VARCHAR(50) NOT NULL
  4. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  5. INSERT INTO categoria (nome) values (&#39;Lazer&#39;);
  6. INSERT INTO categoria (nome) values (&#39;Alimenta&#231;&#227;o&#39;);
  7. INSERT INTO categoria (nome) values (&#39;Supermercado&#39;);
  8. INSERT INTO categoria (nome) values (&#39;Farm&#225;cia&#39;);
  9. INSERT INTO categoria (nome) values (&#39;Outros&#39;);

There is no table in the database yet created and no record in schema_version because I also dropped it. Why the error? Can anyone tell me?

答案1

得分: 1

如果您查看Flyway的发布文档,可以看到从Flyway 4升级到5/6时,schema_version表已更改为flyway_schema_history。

此外,用于计算校验和的算法也发生了变化:

版本3 -

通过字节执行crc32:

  1. bytes = resource.loadAsBytes()
  2. ...
  3. crc32.update(bytes);

版本5(非逐字复制) -
通过行执行crc32(忽略CR/LF,并使用UTF-8编码):

  1. BufferedReader bufferedReader = new BufferedReader(new StringReader(resource.loadAsString(configuration.getEncoding())));
  2. [...]
  3. while ((line = bufferedReader.readLine()) != null) {
  4. crc32.update(line.getBytes("UTF-8"));
  5. }

Flyway在v6中用于计算校验和的类名为org.flywaydb.core.internal.resolver.ChecksumCalculator

第一个更改(关于表格)可以通过使用以下属性来解决:

  1. flyway.table=schema_version

第二个更改(校验和算法)可以通过在调用迁移之前使用flyway repair来解决(可以通过命令行或代码执行):

  1. Flyway flyway = fluentConfig.schemas(schemaName).load();
  2. flyway.repair();
  3. flyway.migrate();
英文:

If you check the release documentation of Flyway, it says, that from Flyway 4 to 5/6 the schema_version table has changed to flyway_schema_history.

Also the algorithm to calculate checksum has changed:

version 3 -

crc32 over bytes:


  1. bytes = resource.loadAsBytes()
  2. ...
  3. crc32.update(bytes);

version 5 (not a verbatim copy) -
crc32 over lines (ignoring CR/LF, and using UTF-8 encoding):

  1. BufferedReader bufferedReader = new BufferedReader(new StringReader(resource.loadAsString(configuration.getEncoding())));
  2. [...]
  3. while ((line = bufferedReader.readLine()) != null) {
  4. crc32.update(line.getBytes(&quot;UTF-8&quot;));
  5. }

The class name which flyway uses for checksum calculation in v6 is org.flywaydb.core.internal.resolver.ChecksumCalculator

The first change (about table) can be tackled by using the following property:

  1. flyway.table=schema_version

The second change( checksum algorithm) can be tackled by using flyway repair before calling migrate (either through commandline or through code)

  1. Flyway flyway = fluentConfig.schemas(schemaName).load();
  2. flyway.repair();
  3. flyway.migrate();

答案2

得分: 0

以下是您的翻译内容:

我的POM:

这是我的pom.xml文件:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <parent>
  7. <groupId>org.springframework.boot</groupId>
  8. <artifactId>spring-boot-starter-parent</artifactId>
  9. <version>2.3.1.RELEASE</version>
  10. <!-- <packaging>jar</packaging> -->
  11. <relativePath /> <!-- 从仓库中查找父级 -->
  12. </parent>
  13. <groupId>com.algaworks.algamoney-api</groupId>
  14. <artifactId>algamoney-api</artifactId>
  15. <version>1.0.0-SNAPSHOT</version>
  16. <name>algamoney-api</name>
  17. <description>Spring Boot演示项目</description>
  18. <properties>
  19. <java.version>1.8</java.version>
  20. </properties>
  21. <dependencies>
  22. <dependency>
  23. <groupId>org.springframework.boot</groupId>
  24. <artifactId>spring-boot-starter-data-jpa</artifactId>
  25. </dependency>
  26. <dependency>
  27. <groupId>org.springframework.boot</groupId>
  28. <artifactId>spring-boot-starter-web</artifactId>
  29. </dependency>
  30. <dependency>
  31. <groupId>org.springframework.boot</groupId>
  32. <artifactId>spring-boot-devtools</artifactId>
  33. <scope>runtime</scope>
  34. <optional>true</optional>
  35. </dependency>
  36. <dependency>
  37. <groupId>mysql</groupId>
  38. <artifactId>mysql-connector-java</artifactId>
  39. <scope>runtime</scope>
  40. </dependency>
  41. <dependency>
  42. <groupId>javax.validation</groupId>
  43. <artifactId>validation-api</artifactId>
  44. <version>2.0.1.Final</version>
  45. </dependency>
  46. <dependency>
  47. <groupId>org.flywaydb</groupId>
  48. <artifactId>flyway-core</artifactId>
  49. <version>6.4.4</version>
  50. <scope>runtime</scope>
  51. </dependency>
  52. <dependency>
  53. <groupId>org.springframework.boot</groupId>
  54. <artifactId>spring-boot-starter-test</artifactId>
  55. <scope>test</scope>
  56. <exclusions>
  57. <exclusion>
  58. <groupId>org.junit.vintage</groupId>
  59. <artifactId>junit-vintage-engine</artifactId>
  60. </exclusion>
  61. </exclusions>
  62. </dependency>
  63. </dependencies>
  64. <build>
  65. <plugins>
  66. <plugin>
  67. <groupId>org.springframework.boot</groupId>
  68. <artifactId>spring-boot-maven-plugin</artifactId>
  69. </plugin>
  70. </plugins>
  71. </build>
  72. </project>

注意:这是您提供的内容的中文翻译,其中代码部分没有进行翻译。

英文:

My pom:

This is my pom.xml:

  1. &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
  2. &lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot;
  3. xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
  4. xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&gt;
  5. &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
  6. &lt;parent&gt;
  7. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  8. &lt;artifactId&gt;spring-boot-starter-parent&lt;/artifactId&gt;
  9. &lt;version&gt;2.3.1.RELEASE&lt;/version&gt;
  10. &lt;!-- &lt;packaging&gt;jar&lt;/packaging&gt; --&gt;
  11. &lt;relativePath /&gt; &lt;!-- lookup parent from repository --&gt;
  12. &lt;/parent&gt;
  13. &lt;groupId&gt;com.algaworks.algamoney-api&lt;/groupId&gt;
  14. &lt;artifactId&gt;algamoney-api&lt;/artifactId&gt;
  15. &lt;version&gt;1.0.0-SNAPSHOT&lt;/version&gt;
  16. &lt;name&gt;algamoney-api&lt;/name&gt;
  17. &lt;description&gt;Demo project for Spring Boot&lt;/description&gt;
  18. &lt;properties&gt;
  19. &lt;java.version&gt;1.8&lt;/java.version&gt;
  20. &lt;/properties&gt;
  21. &lt;dependencies&gt;
  22. &lt;dependency&gt;
  23. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  24. &lt;artifactId&gt;spring-boot-starter-data-jpa&lt;/artifactId&gt;
  25. &lt;/dependency&gt;
  26. &lt;dependency&gt;
  27. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  28. &lt;artifactId&gt;spring-boot-starter-web&lt;/artifactId&gt;
  29. &lt;/dependency&gt;
  30. &lt;dependency&gt;
  31. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  32. &lt;artifactId&gt;spring-boot-devtools&lt;/artifactId&gt;
  33. &lt;scope&gt;runtime&lt;/scope&gt;
  34. &lt;optional&gt;true&lt;/optional&gt;
  35. &lt;/dependency&gt;
  36. &lt;dependency&gt;
  37. &lt;groupId&gt;mysql&lt;/groupId&gt;
  38. &lt;artifactId&gt;mysql-connector-java&lt;/artifactId&gt;
  39. &lt;scope&gt;runtime&lt;/scope&gt;
  40. &lt;/dependency&gt;
  41. &lt;dependency&gt;
  42. &lt;groupId&gt;javax.validation&lt;/groupId&gt;
  43. &lt;artifactId&gt;validation-api&lt;/artifactId&gt;
  44. &lt;version&gt;2.0.1.Final&lt;/version&gt;
  45. &lt;/dependency&gt;
  46. &lt;dependency&gt;
  47. &lt;groupId&gt;org.flywaydb&lt;/groupId&gt;
  48. &lt;artifactId&gt;flyway-core&lt;/artifactId&gt;
  49. &lt;version&gt;6.4.4&lt;/version&gt;
  50. &lt;scope&gt;runtime&lt;/scope&gt;
  51. &lt;/dependency&gt;
  52. &lt;dependency&gt;
  53. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  54. &lt;artifactId&gt;spring-boot-starter-test&lt;/artifactId&gt;
  55. &lt;scope&gt;test&lt;/scope&gt;
  56. &lt;exclusions&gt;
  57. &lt;exclusion&gt;
  58. &lt;groupId&gt;org.junit.vintage&lt;/groupId&gt;
  59. &lt;artifactId&gt;junit-vintage-engine&lt;/artifactId&gt;
  60. &lt;/exclusion&gt;
  61. &lt;/exclusions&gt;
  62. &lt;/dependency&gt;
  63. &lt;/dependencies&gt;
  64. &lt;build&gt;
  65. &lt;plugins&gt;
  66. &lt;plugin&gt;
  67. &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
  68. &lt;artifactId&gt;spring-boot-maven-plugin&lt;/artifactId&gt;
  69. &lt;/plugin&gt;
  70. &lt;/plugins&gt;
  71. &lt;/build&gt;
  72. &lt;/project&gt;

huangapple
  • 本文由 发表于 2020年6月29日 01:40:57
  • 转载请务必保留本文链接:https://go.coder-hub.com/62626141.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定