spring-native icon indicating copy to clipboard operation
spring-native copied to clipboard

Add support for MariaDB driver

Open oclay1st opened this issue 4 years ago • 3 comments

I have been testing an app using spring jdbc with the MariaDB driver. I'm able to build the native image without any error but after running the app and execute a query I got the next error:

PD: It seems the MariaDB connector is ignoring for some reason the username and password from the datasource. Does anyone can help me please, @sdeleuze ?

the application.properties:

spring.datasource.url=jdbc:mariadb://192.168.42.187:3308/db
spring.datasource.username=dbuser
spring.datasource.password=dbpassword
 Could not connect to address=(host=192.168.42.187)(port=3308)(type=master) : (conn=76) Access denied for user 'user'@'192.168.42.187' (using password: NO); nested exception is java.sql.SQLInvalidAuthorizationSpecException: Could not connect to address=(host=192.168.42.187)(port=3308)(type=master) : (conn=76) Access denied for user 'user'@'192.168.42.187' (using password: NO)] with root cause


java.sql.SQLInvalidAuthorizationSpecException: (conn=76) Access denied for user 'user'@'192.168.42.187' (using password: NO)
        at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.createException(ExceptionFactory.java:66) ~[na:na]
        at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.create(ExceptionFactory.java:189) ~[na:na]
        at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.authenticationHandler(AbstractConnectProtocol.java:778) ~[na:na]
        at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.createConnection(AbstractConnectProtocol.java:555) ~[na:na]
        at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1389) ~[na:na]
        at org.mariadb.jdbc.internal.util.Utils.retrieveProxy(Utils.java:635) ~[na:na]
        at org.mariadb.jdbc.MariaDbConnection.newConnection(MariaDbConnection.java:150) ~[na:na]
        at org.mariadb.jdbc.Driver.connect(Driver.java:89) ~[demo:na]
        at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:121) ~[na:na]
        at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:364) ~[na:na]
        at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206) ~[na:na]
        at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:476) ~[na:na]
        at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:561) ~[na:na]
        at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115) ~[na:na]
        at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) ~[demo:na]
        at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:158) ~[na:na]
        at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:116) ~[na:na]
        at org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy$TransactionAwareInvocationHandler.invoke(TransactionAwareDataSourceProxy.java:223) ~[na:na]
        at com.sun.proxy.$Proxy311.prepareStatement(Unknown Source) ~[na:na]
        at org.jooq.impl.ProviderEnabledConnection.prepareStatement(ProviderEnabledConnection.java:109) ~[na:na]
        at org.jooq.impl.SettingsEnabledConnection.prepareStatement(SettingsEnabledConnection.java:73) ~[na:na]
        at org.jooq.impl.AbstractResultQuery.prepare(AbstractResultQuery.java:262) ~[na:na]
        at org.jooq.impl.AbstractQuery.execute(AbstractQuery.java:342) ~[na:na]
        at org.jooq.impl.AbstractResultQuery.fetchLazy(AbstractResultQuery.java:453) ~[na:na]
        at org.jooq.impl.AbstractResultQuery.fetchLazy(AbstractResultQuery.java:422) ~[na:na]
        at org.jooq.impl.AbstractResultQuery.fetchLazyNonAutoClosing(AbstractResultQuery.java:436) ~[na:na]
        at org.jooq.impl.AbstractResultQuery.fetchOne(AbstractResultQuery.java:613) ~[na:na]
        at org.jooq.impl.AbstractResultQuery.fetchOne(AbstractResultQuery.java:565) ~[na:na]
        at org.jooq.impl.SelectImpl.fetchOne(SelectImpl.java:3034) ~[na:na]

oclay1st avatar Aug 11 '21 04:08 oclay1st

No MariaDB driver is not yet supported, feel free to contribute it using the MySQL one as example and following the how to contribute documentation.

sdeleuze avatar Aug 17 '21 14:08 sdeleuze

I will try, thanks

oclay1st avatar Aug 18 '21 04:08 oclay1st

I've created a pull request for the hint configuration.

cschaible avatar Sep 12 '21 19:09 cschaible

Spring Native is now superseded by Spring Boot 3 official native support, see the related reference documentation for more details.

As a consequence, I am closing this issue, and recommend trying your use case with latest Spring Boot 3 version. If you still experience the issue reported here, please open an issue directly on the GraalVM Reachability Repository project.

Thanks for your contribution on the experimental Spring Native project, we hope you will enjoy the official native support introduced by Spring Boot 3.

sdeleuze avatar Jan 02 '23 12:01 sdeleuze