Liquibase 没有为 Spring Boot/MySQL 应用程序执行

Spring Boot 1.5.8 和 Java 8 在这里。我已遵循所有 Spring Boot 和 Liquibase 指南,但我似乎无法让 Liquibase 工作。


这是一个指向GitHub 存储库的链接,用于准确重现该问题,但这里是独家新闻:


我有以下 MySQL v8 数据库,它像这样提前创建(在应用程序运行之前):


CREATE DATABASE IF NOT EXISTS troubleshooting_db CHARACTER SET utf8 COLLATE utf8_general_ci;

我有以下src/main/resources/db/changelog文件:


db.changelog-master.yaml:

===

databaseChangeLog:

- include:

  file: db/changelog/1-setup.sql


1-setup.sql:

===

--liquibase formatted sql


--changeset troubleshooting:1 dbms:mysql

-- LOOKUPS

CREATE TABLE IF NOT EXISTS metric_range_categories (

    metric_range_category_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,

    metric_range_category_ref_id VARCHAR(36) NOT NULL,

    metric_range_category_name VARCHAR(250) NOT NULL,

    metric_range_category_label VARCHAR(250) NOT NULL,

    metric_range_category_description VARCHAR(500) NOT NULL,


);




在运行时,我得到以下异常:


Caused by: org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: missing table [metric_range_categories]

    at org.hibernate.tool.schema.internal.SchemaValidatorImpl.validateTable(SchemaValidatorImpl.java:67)

    at org.hibernate.tool.schema.internal.SchemaValidatorImpl.doValidation(SchemaValidatorImpl.java:50)

    at org.hibernate.tool.hbm2ddl.SchemaValidator.validate(SchemaValidator.java:91)

    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:475)

    at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:444)

    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:879)

    ... 29 common frames omitted

因此,当它启动时,Liquibase不会执行/参与,因此 Hibernate JPA 验证失败,因为它正在寻找一个不存在的表(因为 Liquibase 从未介入并完成了它的工作!)。关于我要去哪里出错的任何想法?为什么 Liquibase 没有加入?


喵喔喔
浏览 320回答 1
1回答

慕慕森

回购中有两个不同的问题:application.yml 的位置错误。将其从根目录移动到 src/main/resourcesTroubleshootingConfig.Machine 中的嵌套属性具有空值,因为未创建此 bean“authInfo”并且上下文初始化失败。这是有关Spring Boot 配置绑定如何工作的参考。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java