将 quarkus-hibernate-reactive-panache 与 quarkus-reactive-mysql-client 一起使用时出现异常 "Not using JDBC" - (Quarkus 1.12.2.Final)

Getting exception "Not using JDBC" while using quarkus-hibernate-reactive-panache with quarkus-reactive-mysql-client - (Quarkus 1.12.2.Final)

Quarkus 1.12.2.Final

使用 reactive hibernate (quarkus-hibernate-reactive-panache) 和 reactive MySQL client 时出现以下异常(quarkus-reactive-mysql-client),请提出问题所在。

2021-04-01 11:35:28,694 ERROR [org.hib.eng.jdb.spi.SqlExceptionHelper] (Quarkus Main Thread) Not using JDBC
2021-04-01 11:35:28,727 ERROR [io.qua.run.Application] (Quarkus Main Thread) Failed to start application (with profile dev): java.sql.SQLException: Not using JDBC
    at org.hibernate.reactive.provider.service.NoJdbcConnectionProvider.getConnection(NoJdbcConnectionProvider.java:25)
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator$ConnectionProviderJdbcConnectionAccess.obtainConnection(JdbcEnvironmentInitiator.java:180)

一些细节

我的application.properties

quarkus.datasource.jdbc=false
quarkus.datasource.db-kind=mysql
quarkus.datasource.username=root
quarkus.datasource.password=root
quarkus.datasource.reactive.url=mysql://localhost:3306/mydb
quarkus.datasource.reactive.max-size=20

我的存储库实现

@ApplicationScoped public class EventRepository implements PanacheRepository<Event> {

}

将您的 application.properties 更改为

quarkus.datasource.db-kind=mysql
quarkus.datasource.username=root
quarkus.datasource.password=root
quarkus.datasource.reactive.url=vertx-reactive:mysql://localhost:3306/mydb
quarkus.datasource.reactive.max-size=20

您可以尝试将以下 属性 添加到您的设置中吗?

quarkus.hibernate-orm.database.generation=update

当你 运行 你的服务器时,你可以写 drop-and-create 来重新创建你的数据库。查看详细信息 here

这是问题的原因->我使用了属性"quarkus.hibernate-orm.database.generation=update"。使用这个 属性 似乎需要 JDBC 连接,删除它,它工作正常。

以下任何配置集都可以工作。

quarkus.datasource.db-kind=mysql
quarkus.datasource.username=****
quarkus.datasource.password=****
quarkus.datasource.reactive.url=mysql://localhost:3306/db
or 
quarkus.datasource.reactive.url=vertx-reactive:mysql://localhost:3306/db

嗯。 JDBCHibernate update 应该适用于您的情况。您的项目中是否有 JDBC 扩展(依赖项)?如果没有,尝试广告一个。

如果是 postgres,您可以通过这种方式添加扩展:

./mvnw quarkus:add-extension -Dextensions="jdbc-postgresql

更多信息在这里

Add the agroal extension plus one of jdbc-db2, jdbc-derby, jdbc-h2, jdbc-mariadb, jdbc-mssql, jdbc-mysql, jdbc-oracle or jdbc-postgresql.

https://quarkus.io/guides/datasource

“Hibernate Reactive 的最新版本尚不支持模式更新和验证。”

此处相对问题:

将此依赖项添加到您的 pom.xml 文件中。

<!-- https://mvnrepository.com/artifact/io.quarkus/quarkus-jdbc-postgresql -->
<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-jdbc-postgresql</artifactId>
    <version>2.9.2.Final</version>
</dependency>