ODBC 연결하기
/usr/lib64 로 'libmaodbc.so'를 옮겨놔도 isql을 실행했을 때 읽지 못한 문제가 발생했다.
이 때 압축 푼 ODBC 폴더 내에 'libmariadb.so.3'와 같은 이름의 파일을 함께 lib64로 옮겼더니 실행된듯 했다. 다시 해봐야겠다.
윈도우에서 진행한 JSP 프로젝트를 연결할 때, MySql을 이용한 JDBC 드라이버를 통해서 톰캣을 연결했었다. 리눅스에서도 마찬가지로 JSP 프로젝트를 웹에 띄우려고 하다보니 드라이버가 필요했었는데, 문제는 리눅스에서 윈도우에서와는 다르게 MariaDB를 사용했다는 것이다.
이에 맞는 드라이버가 필요했다.
불행하게도 내가 처음 접하게 된 드라이버는 ODBC였다. 그래서 나는 "아, 리눅스에서 사용하는 JDBC 역할의 드라이버 명칭이 ODBC구나 라고 생각했었다."
그래서 이틀 간의 삽질끝에 ODBC를 연결을 하려해도
DB와 ODBC끼리는 연결이 되었는데도 도저히 웹에서 ODBC를 인식하지 못하고,
Exception: No suitable driver found for jdbc:odbc:db_terry Exception: org.mariadb.jdbc.Driver
이런식으로 오류가 뜨곤 했다. 내가 뭘 잘못한 걸까... 하던 찰나에 알게 된 사실은
ODBC는 C, C++, Python 등의 언어에서 사용이 된다.
라는 것이었다. 나는 Java를 사용했으니 당연히 안 될수밖에.
Java 기반 프로젝트는 JDBC를 써야한다.
그럼 이제 문제는 Mysql -> MariaDB로 옮겨졌을 때의 변경된 문법을 알아봐야 한다.
public class DBManager {
public static Connection getConnection() {
Connection conn = null;
String url = "jdbc:mysql://localhost:3306/DB명";
String username = "ID";
String password = "비밀번호";
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection(url, username, password);
System.out.println("Database 연동 성공");
}catch (Exception e) {
e.printStackTrace();
System.out.println("Database 연동 실패");
}
return conn;
}
기존에 내가 사용했던 DBManager.java 파일의 일부이다. 이 부분이 사실 DB와의 연결을 좌지우지하기 때문에, 이 부분에서
String url = "jdbc:mysql://localhost:3306/DB명";
String username = "ID";
String password = "비밀번호";
이 부분과
Class.forName("com.mysql.cj.jdbc.Driver");
이 부분만 변경시켜 주면 된다.
변경사항
String url = "jdbc:mariadb://DB 주소:3306/DB명";
String username = "ID";
String password = "비밀번호";
이런식으로 url를 mariadb url로 바꾼 다음, 리눅스에서 사용하는 DB의 ID와 비밀번호를 입력한다.
Class.forName("org.mariadb.jdbc.Driver");
드라이버명 또한 mariadb에 맞게 바꿔준다.
생각보다 간단하다 그러면 서버가 연동이 되고 프로젝트가 띄워질 것이다.