Linux(Mageia)의 NetBeans에서 Java 애플리케이션에서 MariaDB에 연결
간단한 자바 어플리케이션으로 Mariadb에 있는 데이터베이스에 접속하려고 하는데 접속이 실패하여 예외가 발생하였습니다.mysql을 사용하여 비슷한 연결을 했는데 정상적으로 동작하고 있었습니다.문제는 여기 운전기사분일 수도 있어요.
try{
Class.forName("org.mariadb.jdbc.Driver");
Connection connection = DriverManager.getConnection(
"jdbc:mariadb://localhost:3306/project", "root", "");
Statement statement = connection.createStatement();
String uname="xyz",pass="abc";
statement.executeUpdate("insert into user values('"+uname+"','"+pass+"')");}//end of try block
인터넷을 검색하여 도움말을 찾아보니 MariaDB Client Library for Java Applications가 제공하는 드라이버 클래스가 com.mysql.jdbcom.mysql . jdbc 。드라이버는 org.mariadb.jdbc 입니다.기사님! 제가 그렇게 바꿨는데 트라이블록 안 맨 앞줄에 문제가 있는 것 같아요.드라이버가 전혀 로드되지 않는다.또한 mysql jar 파일을 아래 스크린샷과 같이 java 어플리케이션 라이브러리에 추가하였습니다.제발 저를 도와 주세요.
사용하려고 하는 것 같습니다.jdbc:mariadb://...
MySQL JDBC 드라이버를 사용하여 MariaDB 서버 인스턴스에 대한 연결을 설정합니다.MySQL JDBC Driver는 다음과 같이 동작하지 않을 것입니다.jdbc:mysql://...
MySQL 서버 또는 MariaDB 서버 중 어느 쪽에 접속하고 있는지에 관계없이 상관없습니다.즉, 접속 문자열은 (접근 중인 데이터베이스 서버가 아니라) 사용 중인 드라이버와 일치해야 합니다.
MySQL 드라이버와 MariaDB 드라이버는 어느 정도 호환성이 있어야 하지만 MariaDB 서버에 액세스할 때는 MariaDB 커넥터를 사용해야 합니다.중요한 건, 그 조합이mariadb-java-client-1.1.7.jar
그리고.
Connection con = DriverManager.getConnection(
"jdbc:mariadb://localhost/project",
"root",
"whatever");
날 위해 일했어여기에서 Java용 MariaDB Client Library를 다운로드했습니다.
https://downloads.mariadb.org/client-java/1.1.7/
내가 도착한 곳은
https://downloads.mariadb.org/
기타 주의사항:
할 필요가 없다.
Class.forName()
명령어를 입력합니다.Mageia에서 MariaDB의 기본 설정에는 다음이 포함될 수 있습니다.
skip-networking
에 지시하는./etc/my.cnf
JDBC 접속은 항상 MySQL/MariaDB에 대한 "네트워크" 접속처럼 보이기 때문에 JDBC 경유로 데이터베이스에 접속하는 경우 해당 디렉티브를 삭제(또는 코멘트아웃)해야 합니다.localhost
. (필요에 따라서는,bind-address
같은 것에 가치를 두다0.0.0.0
)도 참조해 주세요.)
기타 주의: MariaDB JDBC 드라이버를 탐색하여 URL 해석 파일 내에서 다음을 발견했습니다.
Project: https://github.com/MariaDB/mariadb-connector-j.git
File: src/main/java/org/mariadb/jdbc/UrlParser.java
public static UrlParser parse(final String url, Properties prop) throws SQLException {
....
if (url.startsWith("jdbc:mysql:")) {
UrlParser urlParser = new UrlParser();
parseInternal(urlParser, url, prop);
return urlParser;
} else {
if (url.startsWith("jdbc:mariadb:")) {
UrlParser urlParser = new UrlParser();
parseInternal(urlParser, "jdbc:mysql:" + url.substring(13), prop);
return urlParser;
}
}
바와 같이 "jdbc:mariadb:"
is is is is is is is is is is is로 대체됩니다."jdbc:mysql:"
또는 :의 쪽이든 MariaDB: 의 :mariadb: 의 :mariadb: 의 :mysql: 의 :mysql: 의 구문 해석됩니다."jdbc:mysql:"
.
차이가 없다.
if (url.startsWith("jdbc:mariadb:")) {
....
parseInternal(urlParser, "jdbc:mysql:" + url.substring(13), prop);
....
언급URL : https://stackoverflow.com/questions/23020857/connect-to-mariadb-from-java-application-in-netbeans-on-linux-mageia
'programing' 카테고리의 다른 글
최종적으로 블록에 예외를 발생시킵니다. (0) | 2022.12.09 |
---|---|
$(this)와 this(this)의 차이점은 무엇입니까? (0) | 2022.12.09 |
__proto__ JavaScript의 VS. 프로토타입 (0) | 2022.12.09 |
mysql - 테이블 간에 행을 이동합니다. (0) | 2022.12.09 |
각각 Javascript를 중지하는 방법 (0) | 2022.12.09 |