Skip to content

MySQL driver not detected in Docker environment #150

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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