我想得到一个液化基,Spring和MongoDB一起的例子。为了做到这一点,我使用弹簧起爆创建了一个Spring项目,并将Spring数据MongoDB作为依赖项。这个项目已经连接到数据库,现在我想使用清算库。我使用maven方法遵循了来自液基的指示,但是如果我运行maven命令mvn liquibase:status,我将得到以下错误:
Unexpected error running Liquibase: Cannot find database driver: com.mongodb.client.MongoClients.<init>()它看起来像这个问题已经向清算基地报告了。,但是如果有一个解决方案,它还没有发布在这个问题上。
我还尝试使用CLI选项,将jars添加到液化库安装的lib文件夹中。如果我运行liquibase status,我会得到同样的错误
我在GitHub中创建了一个回购程序来展示这个问题。这里有一些相关的代码配置:
pom.xml
<project>
...
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.3</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
...
<properties>
<liquibase-mongo-ext.version>4.14.0</liquibase-mongo-ext.version>
<liquibase-maven-plugin.version>4.2.0</liquibase-maven-plugin.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.liquibase.ext</groupId>
<artifactId>liquibase-mongodb</artifactId>
<version>${liquibase-mongo-ext.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-maven-plugin</artifactId>
<version>${liquibase-maven-plugin.version}</version>
<configuration>
<propertyFile>liquibase.properties</propertyFile>
</configuration>
<dependencies>
<dependency>
<groupId>org.liquibase.ext</groupId>
<artifactId>liquibase-mongodb</artifactId>
<version>${liquibase-mongo-ext.version}</version>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-sync</artifactId>
<version>4.6.1</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>liquibase.properties
changeLogFile=./mongo/changelog/changelog.sql
url=jdbc:mongodb://127.0.0.1:27017/local
driver=com.mongodb.client.MongoClients我怎么能让清算基地和maven一起运行?有什么建议吗?
正如Andrey建议的那样,编辑1::
driver=liquibase.ext.mongodb.database.MongoClientDriverurl=mongodb://127.0.0.1:27017/local<dependency>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-core</artifactId>
<version>4.9.1</version>
</dependency>mvn liquibase:update现在跟踪以下错误。因为另一个错误似乎与这个错误无关。我将解决这个问题并创建一个新线程。
[ERROR] Failed to execute goal org.liquibase:liquibase-maven-plugin:4.2.0:update (default-cli) on project mongo: Execution default-cli of goal org.liquibase:liquibase-maven-plugin:4.2.0:update failed: A required class was missing while executing org.liquibase:liquibase-maven-plugin:4.2.0:update: liquibase/configuration/HubConfiguration编辑2:,正如答案中提到的,来自HubConfiguration类现在在liquibase.hub.HubConfiguration下的版本与插件的版本不匹配,因为HubConfiguration类现在在liquibase.hub.HubConfiguration下设置了可能也会导致CastException,所以无法找到类。因此我将版本liquibase-maven-plugin更新为4.9.1。
此外,本地数据库的使用与验证器不兼容。URI在url=mongodb://127.0.0.1:27017/test文件中被更新为liquibase.properties。
现在它就像一种魅力!
发布于 2022-08-21 00:06:40
我在您的配置中发现了以下错误:
1.
changeLogFile=./mongo/changelog/changelog.sql
url=jdbc:mongodb://127.0.0.1:27017/local
driver=com.mongodb.client.MongoClients虽然liquibase-mongodb需要类似的内容(没有jdbc前缀,另一个驱动程序类):
changeLogFile=./mongo/changelog/changelog.sql
url=mongodb://127.0.0.1:27017/local
driver=liquibase.ext.mongodb.database.MongoClientDriver<liquibase-maven-plugin.version>4.2.0</liquibase-maven-plugin.version>最后,我在liquibase:update上得到了以下信息
错误未能在项目mongo上执行目标org.liquibase:liquibase-maven-plugin:4.14.0:update (默认-cli):错误设置或运行Liquibase: liquibase.exception.DatabaseException:未能执行:命令失败与错误72 (InvalidOptions):‘在服务器127.0.0.1:27017的本地内部数据库’中的UUID 31bd40b8-3e1c-45c8-9d03-77b91c67a1a9的集合local.DATABASECHANGELOGLOCK上不允许文档验证器。完整的响应是{"ok":0.0,"errmsg":“在集合local.DATABASECHANGELOGLOCK上不允许文档验证器使用UUID 31bd40b8-3e1c-45c8-9d03-77b91c67a1a9在本地内部数据库中”,"code":72,"codeName":"InvalidOptions"}
不知道这意味着什么--一些与mongodb和扩展有关的东西,我相信
UPD。
上一次错误的根源在文档中描述。
Restrictions
不能为管理数据库、本地数据库和配置数据库中的集合指定验证程序。
不能为system.*集合指定验证器。
因此,url (jdbc:mongodb://127.0.0.1:27017/local)应该指向另一个db。
https://stackoverflow.com/questions/73429817
复制相似问题