jhipster - 新权威Jhipster
问题描述
我按照文章https://www.jhipster.tech/tips/025_tip_create_new_authority.html中的说明操作并添加了新权限“ROLE_CLIENT” 之后,我重新启动了我的项目,出现了错误:
2021-07-13 00:22:46.592 WARN 3596 --- [ restartedMain] iguration$LoadBalancerCaffeineWarnLogger : Spring Cloud LoadBalancer is currently working with the default cache. You can switch to using Caffeine cache, by adding it and org.springframework.cache.caffeine.CaffeineCacheManager to the classpath.
2021-07-13 00:22:46.806 ERROR 3596 --- [ gateway-task-1] t.j.c.liquibase.AsyncSpringLiquibase : Liquibase could not start correctly, your database is NOT ready: Validation Failed:
1 change sets check sum
config/liquibase/changelog/00000000000000_initial_schema.xml::00000000000001::jhipster was: 8:06225dfc05215e6b13d8a4febd3fd90f but is now: 8:2272077bd3e9baf389312f0e018e5795
liquibase.exception.ValidationFailedException: Validation Failed:
1 change sets check sum
config/liquibase/changelog/00000000000000_initial_schema.xml::00000000000001::jhipster was: 8:06225dfc05215e6b13d8a4febd3fd90f but is now: 8:2272077bd3e9baf389312f0e018e5795
at liquibase.changelog.DatabaseChangeLog.validate(DatabaseChangeLog.java:299)
at liquibase.Liquibase.lambda$update$1(Liquibase.java:237)
at liquibase.Scope.lambda$child$0(Scope.java:160)
at liquibase.Scope.child(Scope.java:169)
at liquibase.Scope.child(Scope.java:159)
at liquibase.Scope.child(Scope.java:138)
at liquibase.Liquibase.runInScope(Liquibase.java:2370)
at liquibase.Liquibase.update(Liquibase.java:217)
at liquibase.Liquibase.update(Liquibase.java:203)
at liquibase.integration.spring.SpringLiquibase.performUpdate(SpringLiquibase.java:321)
at liquibase.integration.spring.SpringLiquibase.afterPropertiesSet(SpringLiquibase.java:275)
at org.springframework.boot.autoconfigure.liquibase.DataSourceClosingSpringLiquibase.afterPropertiesSet(DataSourceClosingSpringLiquibase.java:46)
at tech.jhipster.config.liquibase.AsyncSpringLiquibase.initDb(AsyncSpringLiquibase.java:118)
at tech.jhipster.config.liquibase.AsyncSpringLiquibase.lambda$afterPropertiesSet$0(AsyncSpringLiquibase.java:93)
at tech.jhipster.async.ExceptionHandlingAsyncTaskExecutor.lambda$createWrappedRunnable$1(ExceptionHandlingAsyncTaskExecutor.java:78)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
顺便说一句,我正在使用微服务架构和 JWT 身份验证。
解决方案
这是正常的:Liquibase 变更集应该是不可变的。
这就是为什么 Liquibase 在数据库变更日志表中记录每个变更集条目的 md5 校验和,以检测当前变更日志中的内容与实际针对数据库运行的内容之间的差异。
当您修改authority.csv
时,变更集的校验和发生了变化,Liquibase 正确地抱怨了。
因此,您有 3 种替代解决方案:
- 创建一个单独的变更集以仅插入您的新权限(生产中的首选方式)
- 在您使用 DBeaver 等数据库客户端连接到您的数据库并删除表
MD5SUM
中更改日志行的列时,清除变更集的校验和列DATABASECHANGELOG
。看看https://docs.liquibase.com/concepts/basic/databasechangelog-table.html - 删除您的数据库以从头开始重新启动,如果您不关心您的数据,这可能适用于开发数据库
推荐阅读
- java - 是否可以在 Gradle、Android 项目中使用 ApiFuture?
- dart - 在颤动中动态加载表单字段的最佳方法是什么?
- python - 使用 pytest 模拟 SQLAlchemy 数据库 URI
- python - 从句子列表中创建最常用词的词汇表的任何有效方法?
- java - 求 Recamán 数列的第 n 个值
- multithreading - 高速缓存一致性操作期间处理器是否停止
- c# - 如何使用包含从 XML 节点阅读器解析的 XML 数据的 C# 列表填充 DataGrid?
- python - 如何使用 SQLite 在 python 3.x 中修复“'int' object has no attribute 'execute'”错误?
- javascript - JavaScript url 输入文本?
- amazon-web-services - 如何在一次调用中从 AWS S3 复制多个文件而无需递归?