Java 测试MySQL/MariaDB JDBC驱动程序错误时出错

Java 测试MySQL/MariaDB JDBC驱动程序错误时出错,java,xml,spring,spring-boot,liquibase,Java,Xml,Spring,Spring Boot,Liquibase,我一直在尝试将Liquibase 3.6.3与spring boot 2.1.5.RELEASE应用程序集成,但在运行该应用程序时出现了此错误 Caused by: liquibase.exception.DatabaseException: liquibase.exception.UnexpectedLiquibaseException: Error during testing for MySQL/MariaDB JDBC driver bug: could not retrieve JDB

我一直在尝试将Liquibase 3.6.3与spring boot 2.1.5.RELEASE应用程序集成,但在运行该应用程序时出现了此错误

Caused by: liquibase.exception.DatabaseException: liquibase.exception.UnexpectedLiquibaseException: Error during testing for MySQL/MariaDB JDBC driver bug: could not retrieve JDBC metadata information for temporary table 'TMP_TYIVMBAICPSUJGIJ'
at liquibase.snapshot.jvm.ForeignKeySnapshotGenerator.snapshotObject(ForeignKeySnapshotGenerator.java:223) ~[liquibase-core-3.6.3.jar:na]
at liquibase.snapshot.jvm.JdbcSnapshotGenerator.snapshot(JdbcSnapshotGenerator.java:66) ~[liquibase-core-3.6.3.jar:na]
at liquibase.snapshot.SnapshotGeneratorChain.snapshot(SnapshotGeneratorChain.java:49) ~[liquibase-core-3.6.3.jar:na]
at liquibase.snapshot.jvm.JdbcSnapshotGenerator.snapshot(JdbcSnapshotGenerator.java:69) ~[liquibase-core-3.6.3.jar:na]
at liquibase.snapshot.SnapshotGeneratorChain.snapshot(SnapshotGeneratorChain.java:49) ~[liquibase-core-3.6.3.jar:na]
at liquibase.snapshot.DatabaseSnapshot.include(DatabaseSnapshot.java:286) ~[liquibase-core-3.6.3.jar:na]
at liquibase.snapshot.DatabaseSnapshot.replaceObject(DatabaseSnapshot.java:407) ~[liquibase-core-3.6.3.jar:na]
at liquibase.snapshot.DatabaseSnapshot.includeNestedObjects(DatabaseSnapshot.java:334) ~[liquibase-core-3.6.3.jar:na]
at liquibase.snapshot.DatabaseSnapshot.include(DatabaseSnapshot.java:309) ~[liquibase-core-3.6.3.jar:na]
at liquibase.snapshot.DatabaseSnapshot.replaceObject(DatabaseSnapshot.java:407) ~[liquibase-core-3.6.3.jar:na]
at liquibase.snapshot.DatabaseSnapshot.replaceObject(DatabaseSnapshot.java:429) ~[liquibase-core-3.6.3.jar:na]
at liquibase.snapshot.DatabaseSnapshot.includeNestedObjects(DatabaseSnapshot.java:334) ~[liquibase-core-3.6.3.jar:na]
at liquibase.snapshot.DatabaseSnapshot.include(DatabaseSnapshot.java:309) ~[liquibase-core-3.6.3.jar:na]
at liquibase.snapshot.DatabaseSnapshot.replaceObject(DatabaseSnapshot.java:386) ~[liquibase-core-3.6.3.jar:na]
at liquibase.snapshot.DatabaseSnapshot.includeNestedObjects(DatabaseSnapshot.java:334) ~[liquibase-core-3.6.3.jar:na]
at liquibase.snapshot.DatabaseSnapshot.include(DatabaseSnapshot.java:309) ~[liquibase-core-3.6.3.jar:na]
at liquibase.snapshot.DatabaseSnapshot.init(DatabaseSnapshot.java:102) ~[liquibase-core-3.6.3.jar:na]
at liquibase.snapshot.DatabaseSnapshot.<init>(DatabaseSnapshot.java:59) ~[liquibase-core-3.6.3.jar:na]
at liquibase.snapshot.JdbcDatabaseSnapshot.<init>(JdbcDatabaseSnapshot.java:38) ~[liquibase-core-3.6.3.jar:na]
at liquibase.snapshot.SnapshotGeneratorFactory.createSnapshot(SnapshotGeneratorFactory.java:217) ~[liquibase-core-3.6.3.jar:na]
at liquibase.snapshot.SnapshotGeneratorFactory.createSnapshot(SnapshotGeneratorFactory.java:246) ~[liquibase-core-3.6.3.jar:na]
at liquibase.snapshot.SnapshotGeneratorFactory.createSnapshot(SnapshotGeneratorFactory.java:230) ~[liquibase-core-3.6.3.jar:na]
at liquibase.change.core.LoadDataChange.retrieveMissingColumnLoadTypes(LoadDataChange.java:581) ~[liquibase-core-3.6.3.jar:na]
at liquibase.change.core.LoadDataChange.generateStatements(LoadDataChange.java:283) ~[liquibase-core-3.6.3.jar:na]
... 121 common frames omitted

Caused by: liquibase.exception.UnexpectedLiquibaseException: Error during testing for MySQL/MariaDB JDBC driver bug: could not retrieve JDBC metadata information for temporary table 'TMP_TYIVMBAICPSUJGIJ'
at liquibase.database.core.MySQLDatabase.hasBugJdbcConstraintsDeferrable(MySQLDatabase.java:275) ~[liquibase-core-3.6.3.jar:na]
at liquibase.snapshot.jvm.ForeignKeySnapshotGenerator.snapshotObject(ForeignKeySnapshotGenerator.java:188) ~[liquibase-core-3.6.3.jar:na]
... 144 common frames omitted
原因:liquibase.exception.DatabaseException:liquibase.exception.unexpected liquibaseexception:MySQL/MariaDB JDBC驱动程序错误测试期间出错:无法检索临时表“TMP_TYIVMBAICPSUJGIJ”的JDBC元数据信息
在liquibase.snapshot.jvm.ForeignKeySnapshotGenerator.snapshotObject(ForeignKeySnapshotGenerator.java:223)~[liquibase-core-3.6.3.jar:na]
在liquibase.snapshot.jvm.JdbcSnapshotGenerator.snapshot(JdbcSnapshotGenerator.java:66)~[liquibase-core-3.6.3.jar:na]
在liquibase.snapshot.SnapshotGeneratorChain.snapshot(SnapshotGeneratorChain.java:49)~[liquibase-core-3.6.3.jar:na]
在liquibase.snapshot.jvm.JdbcSnapshotGenerator.snapshot(JdbcSnapshotGenerator.java:69)~[liquibase-core-3.6.3.jar:na]
在liquibase.snapshot.SnapshotGeneratorChain.snapshot(SnapshotGeneratorChain.java:49)~[liquibase-core-3.6.3.jar:na]
在liquibase.snapshot.DatabaseSnapshot.include(DatabaseSnapshot.java:286)~[liquibase-core-3.6.3.jar:na]
在liquibase.snapshot.DatabaseSnapshot.replaceObject(DatabaseSnapshot.java:407)~[liquibase-core-3.6.3.jar:na]
在liquibase.snapshot.DatabaseSnapshot.includeNestedObjects(DatabaseSnapshot.java:334)~[liquibase-core-3.6.3.jar:na]
在liquibase.snapshot.DatabaseSnapshot.include(DatabaseSnapshot.java:309)~[liquibase-core-3.6.3.jar:na]
在liquibase.snapshot.DatabaseSnapshot.replaceObject(DatabaseSnapshot.java:407)~[liquibase-core-3.6.3.jar:na]
在liquibase.snapshot.DatabaseSnapshot.replaceObject(DatabaseSnapshot.java:429)~[liquibase-core-3.6.3.jar:na]
在liquibase.snapshot.DatabaseSnapshot.includeNestedObjects(DatabaseSnapshot.java:334)~[liquibase-core-3.6.3.jar:na]
在liquibase.snapshot.DatabaseSnapshot.include(DatabaseSnapshot.java:309)~[liquibase-core-3.6.3.jar:na]
在liquibase.snapshot.DatabaseSnapshot.replaceObject(DatabaseSnapshot.java:386)~[liquibase-core-3.6.3.jar:na]
在liquibase.snapshot.DatabaseSnapshot.includeNestedObjects(DatabaseSnapshot.java:334)~[liquibase-core-3.6.3.jar:na]
在liquibase.snapshot.DatabaseSnapshot.include(DatabaseSnapshot.java:309)~[liquibase-core-3.6.3.jar:na]
在liquibase.snapshot.DatabaseSnapshot.init(DatabaseSnapshot.java:102)~[liquibase-core-3.6.3.jar:na]
在liquibase.snapshot.DatabaseSnapshot.(DatabaseSnapshot.java:59)~[liquibase-core-3.6.3.jar:na]
在liquibase.snapshot.JdbcDatabaseSnapshot.(JdbcDatabaseSnapshot.java:38)~[liquibase-core-3.6.3.jar:na]
在liquibase.snapshot.SnapshotGeneratorFactory.createSnapshot(SnapshotGeneratorFactory.java:217)~[liquibase-core-3.6.3.jar:na]
在liquibase.snapshot.SnapshotGeneratorFactory.createSnapshot(SnapshotGeneratorFactory.java:246)~[liquibase-core-3.6.3.jar:na]
在liquibase.snapshot.SnapshotGeneratorFactory.createSnapshot(SnapshotGeneratorFactory.java:230)~[liquibase-core-3.6.3.jar:na]
在liquibase.change.core.LoadDataChange.retrieveMissingColumnLoadTypes(LoadDataChange.java:581)~[liquibase-core-3.6.3.jar:na]
在liquibase.change.core.LoadDataChange.generateStatements(LoadDataChange.java:283)~[liquibase-core-3.6.3.jar:na]
... 省略121个公共帧
原因:liquibase.exception.unexpected liquibaseexception:测试MySQL/MariaDB JDBC驱动程序时出错错误:无法检索临时表“TMP_TYIVMBAICPSUJGIJ”的JDBC元数据信息
在liquibase.database.core.MySQLDatabase.hasbugjdbcconstraintsferrable(MySQLDatabase.java:275)~[liquibase-core-3.6.3.jar:na]
在liquibase.snapshot.jvm.ForeignKeySnapshotGenerator.snapshotObject(ForeignKeySnapshotGenerator.java:188)~[liquibase-core-3.6.3.jar:na]
... 省略144个公共帧
我的配置如下

    outputChangeLogFile=src/main/resources/config/db/db.changelog-master.xml
    driver = com.mysql.cj.jdbc.Driver
    url=jdbc:mysql://localhost:3306/<dbname>?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&useTimezone=true&serverTimezone=UTC
    username = <username>
    password = <password>
outputChangeLogFile=src/main/resources/config/db/db.changelog-master.xml
driver=com.mysql.cj.jdbc.driver
url=jdbc:mysql://localhost:3306/?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&useTimezone=true&serverTimezone=UTC
用户名=
密码=
还将添加主更改日志文件

 <?xml version="1.1" encoding="UTF-8" standalone="no"?>
 <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">

<include file="classpath:config/db/changelog/db.changelog-1.0.xml" relativeToChangelogFile="false"/>
<include file="classpath:config/db/changelog/db.changelog-1.1.xml" relativeToChangelogFile="false"/>

我试图将版本更改为3.5.3,但spring给出了错误

***************************
APPLICATION FAILED TO START
***************************

Description:

An attempt was made to call a method that does not exist. The attempt was made from the following location:
org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration$LiquibaseConfiguration.liquibase(LiquibaseAutoConfiguration.java:127)

The following method did not exist:

liquibase.integration.spring.SpringLiquibase.setLiquibaseSchema(Ljava/lang/String;)V

The method's class, liquibase.integration.spring.SpringLiquibase, is available from the following locations:

jar:file:/C:/Users/<user>/.m2/repository/org/liquibase/liquibase-core/3.5.3/liquibase-core-3.5.3.jar!/liquibase/integration/spring/SpringLiquibase.class

It was loaded from the following location:

file:/C:/Users/<user>/.m2/repository/org/liquibase/liquibase-core/3.5.3/liquibase-core-3.5.3.jar


 Action:

 Correct the classpath of your application so that it contains a single, compatible version of liquibase.integration.spring.SpringLiquibase
***************************
应用程序无法启动
***************************
说明:
试图调用不存在的方法。从以下位置进行了尝试:
org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration$LiquibaseConfiguration.liquibase(LiquibaseAutoConfiguration.java:127)
以下方法不存在:
liquibase.integration.spring.SpringLiquibase.setLiquibaseSchema(Ljava/lang/String;)V
该方法的类liquibase.integration.spring.SpringLiquibase可从以下位置获得:
jar:file:/C:/Users/.m2/repository/org/liquibase/liquibase-core/3.5.3/liquibase-core-3.5.3.jar/liquibase/integration/spring/SpringLiquibase.class
它是从以下位置加载的:
文件:/C:/Users/.m2/repository/org/liquibase/liquibase-core/3.5.3/liquibase-core-3.5.3.jar
行动:
更正应用程序的类路径,使其包含一个兼容版本的liquibase.integration.spring.SpringLiquibase
这是虫子吗?我如何解决这个问题

注: liquibase maven插件:3.5.3:使用

mvn:liquibase:更新

帮助我生成表格。我曾经

liquibase maven插件:3.5.3

用于生成它。
仍然不知道为什么3.6.3会给出错误。

问题可能是您的MySQL实例使用MyISAM作为默认存储引擎运行。在3.6.x和3.7.x版本中,Liquibase尝试创建一个临时表来检查jdbc驱动程序错误。如果它是用MyISAM引擎创建的,那么该表的约束是可延迟的。Liquibase将此转换为“驱动程序错误”错误(他们的方法甚至被命名为hasBugJdbcConstraintsDeferrable)。

来解决这个问题