如何修复 liquibase 的给定数据库 URL 可能存在错误的驱动程序

问题描述 投票:0回答:2

我有一个 jhipster 生成的数据库,我正在尝试运行此命令:

mvn liquibase:diff

但是现在我收到以下错误:

Failed to execute goal org.liquibase:liquibase-maven-plugin:4.6.1:diff (default-cli) on project product: 
Error setting up or running Liquibase:
liquibase.exception.DatabaseException: liquibase.exception.DatabaseException: liquibase.exception.DatabaseException: Connection could not be created to hibernate:spring:com.moniesta.product.domain?dialect=&hibernate.physical_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy&hibernate.implicit_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy with driver com.mysql.jdbc.Driver.  Possibly the wrong driver for the given database URL

我的数据库在 docker 中运行,并在其 docker-compose 中配置如下:

  products-mysql:
    image: mysql:8.0.28
    platform: linux/x86_64
    environment:
      - MYSQL_ALLOW_EMPTY_PASSWORD=yes
      - MYSQL_DATABASE=products
    command: mysqld --lower_case_table_names=1 --skip-ssl --character_set_server=utf8mb4 --explicit_defaults_for_timestamp
    ports:
      - '3306:3306'

这就是我的 pom 为 liquibase 命令配置的方式:

               <configuration>
                        <changeLogFile>${project.basedir}/src/main/resources/config/liquibase/master.xml</changeLogFile>
                        <diffChangeLogFile>${project.basedir}/src/main/resources/config/liquibase/changelog/${maven.build.timestamp}_changelog.xml</diffChangeLogFile>
                        <driver>com.mysql.jdbc.Driver</driver>
                        <url>jdbc:mysql://localhost:3306/product?useUnicode=true&amp;characterEncoding=utf8&amp;useSSL=false&amp;useLegacyDatetimeCode=false&amp;serverTimezone=UTC&amp;createDatabaseIfNotExist=true</url>
                        <username>root</username>
                        <emptyPassword>true</emptyPassword>
                        <referenceDriver>com.mysql.jdbc.Driver</referenceDriver>
                        <contexts>local</contexts>
                        <referenceUrl>hibernate:spring:com.moniesta.product.domain?dialect=&amp;hibernate.physical_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy&amp;hibernate.implicit_naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy</referenceUrl>
                        <verbose>true</verbose>
                        <logging>error</logging>
                        <contexts>!test</contexts>
                    </configuration>

我看到它尝试正确连接到数据库,但驱动程序失败,但这是一个 mysql 数据库,所以驱动程序不应该是 mysql.jdbc 吗?我使用的是mysql8

java spring hibernate maven liquibase
2个回答
1
投票

您尝试过“com.mysql.cj.jdbc.Driver”吗?


0
投票

对我来说,可行的解决方案如下: 液体库版本:4.29.2 数据库:Postgres

  1. 创建了一个空文件夹结构
  2. 发出命令
    liquibase init project
  3. 提供了“自定义”选项并输入了相关的数据库连接字符串和详细信息
  4. 选择changelog的SQL模式
  5. 在变更日志文件中提供了所需的数据库脚本
  6. 终于给了
    liquibase update

这成功执行了脚本,无需在属性文件或任何jdbc jar中添加任何驱动程序(因为internal/lib已经有postgres驱动程序jar)

© www.soinside.com 2019 - 2024. All rights reserved.