Có vẻ như bạn đang cố sử dụng jdbc:mariadb://...
để thiết lập kết nối với phiên bản máy chủ MariaDB bằng Trình điều khiển JDBC MySQL. Điều đó có thể sẽ không hoạt động vì Trình điều khiển JDBC của MySQL sẽ sử dụng jdbc:mysql://...
, bất kể nó đang kết nối với máy chủ MySQL hay máy chủ MariaDB. Nghĩa là, chuỗi kết nối phải khớp với trình điều khiển đang được sử dụng (thay vì máy chủ cơ sở dữ liệu đang được truy cập).
Trình điều khiển MySQL và MariaDB được cho là có thể hoán đổi cho nhau, nhưng có vẻ như bạn chỉ nên sử dụng trình kết nối MariaDB khi truy cập máy chủ MariaDB một cách thận trọng. Đối với những gì nó đáng giá, sự kết hợp của mariadb-java-client-1.1.7.jar
và
Connection con = DriverManager.getConnection(
"jdbc:mariadb://localhost/project",
"root",
"whatever");
đã làm cho tôi. Tôi đã tải xuống Thư viện máy khách MariaDB cho Java từ đây:
https://downloads.mariadb.org/client-java/1.1.7/
mà tôi đã đến qua
https://downloads.mariadb.org/
Ghi chú bổ sung:
-
Không cần
Class.forName()
trong mã Java của bạn. -
Cấu hình mặc định cho MariaDB trong Mageia có thể bao gồm
skip-networking
chỉ thị trong/etc/my.cnf
. Bạn sẽ cần phải xóa (hoặc bình luận) chỉ thị đó nếu bạn muốn kết nối với cơ sở dữ liệu qua JDBC vì các kết nối JDBC luôn trông giống như kết nối "mạng" với MySQL / MariaDB, ngay cả khi chúng là kết nối từlocalhost
. (Bạn có thể cần chỉnh sửabind-address
giá trị thành một cái gì đó như0.0.0.0
nữa.)