【问题标题】:Cannot inject default MySQL datasource无法注入默认 MySQL 数据源
【发布时间】:2020-08-15 21:46:51
【问题描述】:

我正在努力注入默认数据源,但出现以下错误:

javax.enterprise.inject.IllegalProductException:正常范围的生产者方法可能不会返回 null: io.quarkus.agroal.runtime.DataSourceProducer.createDefaultDataSource()

这是我目前的情况:

application.properties

quarkus.datasource.driver = com.mysql.cj.jdbc.Driver
quarkus.datasource.jdbc.url=jdbc:mysql://localhost:3307/sandbox
quarkus.datasource.username=root
quarkus.datasource.password=password
quarkus.datasource.jdbc.min-size=0
quarkus.datasource.jdbc.max-size=11

MyClass.java

@ApplicationScoped
public class MyClass {

    @Inject
    AgroalDataSource dataSource;

    void methodUsingDataSource() {...}
}

但是,我使它与具有 SAME 配置作为默认配置的命名数据源一起使用:

application.properties

quarkus.datasource.users.driver = com.mysql.cj.jdbc.Driver
quarkus.datasource.users.url=jdbc:mysql://localhost:3307/sandbox
quarkus.datasource.users.username=root
quarkus.datasource.users.password=password
quarkus.datasource.users.min-size=0
quarkus.datasource.users.max-size=11

MyClass.java

@ApplicationScoped
public class MyClass {

    @Inject
    @DataSource("users")
    AgroalDataSource dataSource;

    void methodUsingDataSource() {...}
}

您对如何解决此行为有任何想法吗?当我想设置 Hibernate 时,这会给我带来问题。

【问题讨论】:

    标签: java mysql jdbc datasource quarkus


    【解决方案1】:

    删除这一行:

    quarkus.datasource.driver = com.mysql.cj.jdbc.Driver
    

    改用这个:

    quarkus.datasource.db-kind = mysql
    

    您在默认数据源中混合了已弃用的配置属性和新的配置属性,并且您的组合不起作用。

    您使用命名数据源提供的示例仅使用旧的配置属性,因此可以正常工作。

    现在我需要了解为什么您没有正确的错误消息。我会努力改进的。

    【讨论】:

    • 应用程序不以此配置启动。我收到以下错误: 原因:javax.enterprise.inject.UnsatisfiedResolutionException:类型 io.agroal.api.AgroalDataSource 和限定符的不满足依赖项 [@Default]
    • 这是 Quarkus 的哪个版本?
    • 这是 1.2.0.Final
    • 现在一切都很好,因为我将 quarkus 版本从 1.2.0.Final 更新到 1.4.1.Final。感谢您的支持!
    • 是的,所以故事是我们更改了数据源配置,而您在默认数据源的配置中使用了 1.2 不支持的一些属性。这就是它没有被创建的原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多