Skip to content

MySQL driver not detected in Docker environment #150

@VaheSargsyan2005

Description

@VaheSargsyan2005

When running Statz v1.6.2 in Docker, the plugin fails to connect to MySQL, despite the MySQL Connector/J driver being installed and running globally in the container. The following error is displayed in the console:

java.lang.RuntimeException: Failed to get driver instance for jdbcUrl=jdbc:mysql://mc-mysql:3306/minecraft
Caused by: java.sql.SQLException: No suitable driver
025-08-14 19:39:57

java.lang.RuntimeException: Failed to get driver instance for jdbcUrl=jdbc:mysql://mc-mysql:3306/minecraft
2025-08-14 19:39:57
	at com.zaxxer.hikari.util.DriverDataSource.<init>(DriverDataSource.java:114) ~[?:?] {}
2025-08-14 19:39:57
	at com.zaxxer.hikari.pool.PoolBase.initializeDataSource(PoolBase.java:320) ~[?:?] {}
2025-08-14 19:39:57
	at com.zaxxer.hikari.pool.PoolBase.<init>(PoolBase.java:109) ~[?:?] {}
2025-08-14 19:39:57
	at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:108) ~[?:?] {}
2025-08-14 19:39:57
	at com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:81) ~[?:?] {}
2025-08-14 19:39:57
	at me.staartvin.statz.database.MySQLConnector.setupDatabaseConnection(MySQLConnector.java:61) ~[?:?] {}
2025-08-14 19:39:57
	at me.staartvin.statz.database.MySQLConnector.getConnection(MySQLConnector.java:73) ~[?:?] {}
2025-08-14 19:39:57
	at me.staartvin.statz.database.MySQLConnector.lambda$load$0(MySQLConnector.java:93) ~[?:?] {}
2025-08-14 19:39:57
	at org.bukkit.craftbukkit.v1_20_R1.scheduler.CraftTask.run(CraftTask.java:82) ~[?:?] {re:classloading}
2025-08-14 19:39:57
	at org.bukkit.craftbukkit.v1_20_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:54) ~[?:?] {re:classloading}
2025-08-14 19:39:57
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[?:?] {re:mixin,re:mixin}
2025-08-14 19:39:57
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[?:?] {}
2025-08-14 19:39:57
	at java.lang.Thread.run(Thread.java:1583) ~[?:?] {re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin,re:mixin}
2025-08-14 19:39:57
Caused by: java.sql.SQLException: No suitable driver
2025-08-14 19:39:57
	at java.sql.DriverManager.getDriver(DriverManager.java:300) ~[java.sql:?] {re:mixin,re:mixin,re:mixin}
2025-08-14 19:39:57
	at com.zaxxer.hikari.util.DriverDataSource.<init>(DriverDataSource.java:106) ~[?:?] {}

Expected behavior:
The plugin should detect the MySQL driver and successfully connect to the database.

Actual behavior:
The plugin crashes with No suitable driver, although the driver exists and runs in the container.

Environment:
Minecraft Server: paper 1.20.1
Statz Version: 1.6.2
MySQL: 8.0 in Docker
Docker ima
MySQL Connector/J: 9.4.0

services:
  main:
    build:
      context: .
      dockerfile: dockerfiles/servers/main/Dockerfile
    container_name: main
    ports:
      - "25573:25571"
      - "25574:25572"
      - "25575:25573"
      - "25576:8100"
    volumes:
      - ./servers/main:/server
    networks:
      - mcnet

  mc-mysql:
    container_name: mc-mysql
    image: mysql:8.0
    environment:
      MYSQL_DATABASE: minecraft
      MYSQL_USER: mcuser
      MYSQL_PASSWORD: mcpassword
      MYSQL_ROOT_PASSWORD: rootpass
    ports:
      - "3306:3306"
    networks:
      - mcnet
FROM debian:bookworm

RUN apt-get update && apt-get install -y \
    wget \
    curl \
    unzip \
    gnupg \
    software-properties-common \
    && apt-get clean

RUN wget -qO- https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --dearmor > /usr/share/keyrings/adoptium.gpg \
    && echo "deb [signed-by=/usr/share/keyrings/adoptium.gpg] https://packages.adoptium.net/artifactory/deb bookworm main" > /etc/apt/sources.list.d/adoptium.list \
    && apt-get update \
    && apt-get install -y temurin-21-jdk \
    && apt-get clean

RUN wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-j_9.4.0-1debian12_all.deb \
    && apt install -y ./mysql-connector-j_9.4.0-1debian12_all.deb \
    && rm mysql-connector-j_9.4.0-1debian12_all.deb

RUN cp /usr/share/java/mysql-connector-j-9.4.0.jar /usr/local/lib/mysql-connector-j.jar
ENV CLASSPATH="/usr/local/lib/mysql-connector-j.jar:$CLASSPATH"

ENV SERVER_JAR=server.jar
ENV CORE_JAR=paper.1.20.1.jar

WORKDIR /core
COPY cores/${CORE_JAR} $SERVER_JAR

COPY ./dockerfiles/servers/entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh

WORKDIR /server
VOLUME ["/server"]

ENTRYPOINT ["/entrypoint.sh"]

#!/bin/bash
if [ ! -f /server/server.jar ]; then
    cp /core/server.jar /server/server.jar
fi

echo "eula=true" > /server/eula.txt
cd /server

echo "Проверка драйвера MySQL..."
java -cp "/usr/local/lib/mysql-connector-j.jar" -Xms128M -Xmx256M -jar /core/server.jar -version
track stats: true
show database save message: false
mysql:
  enabled: true
  hostname: mc-mysql:3306
  username: mcuser
  password: mcpassword
  database: minecraft
  database for backups: Statz_backups
periodic save time: 10
refresh player cache time: 60
disabled statistics:
- DISABLED_STAT_NAME_HERE
- OTHER_DISABLED_STAT_NAME
ignore creative: false
enable debug output: true
latest patch mysql version: 0
use custom statz list: false
custom statz list:
- JOINS
- FOOD_EATEN
- KILLS_PLAYERS
use statz gui: true
enable logging: false
make backup of database before patching: true
latest patch sqlite version: 6

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions