Mysql과 JSP를 JDBC를 사용해서 연결하려고 한다. 바로 에러 발생
1) 첫번째 에러
java.sql.SQLException: No suitable driver
드라이버가 맞지 않다는거다 mysql의 버전과 JDBC 버전이 맞는지 확인해야 한다.
mysql> SELECT version();으로 확인하거나 그냥 mysql에 접속하면 아래에 뜬다
이후 아래 사이트에서 mysql 자기버전 JDBC driver로 검색하여 아래 이미지와 같이 Download 링크로 이동한다.
ex)mysql 8 .0.25 jdbc driver
이후 아래 사이트에서 본인의 운영체제를 선택하여 jar 파일을 다운로드한다.
다운로드 받은 jar파일을 본인의 프로젝트 -> WEB-INF -> lib 안에 넣어준다
이후 jar파일 우클릭 -> build path -> Add ...를 눌러주면 알아서 프로젝트에 해당 jdbc dirver가 적용된다.
2) 바로 찾아오는 두번째 문제
타임존이 문제인 에러였다, URL을 아래와 같이 변경하면 에러가 해결된다.
Public Key Retrieval is not allowed at ~~~ 에러 발생
url="jdbc:mysql://localhost:3306/UserChat?serverTimezone=Asia/Seoul"/>
3) 아직 끝나지 않은 3번째 문제
Unknown system variable 'query_cache_size' ~~~
의존성 문제로 mysql의 버전을 직접 기입해주면된다 version="8.0.25"
runtime "mysql:mysql-connector-java:8.0.25"
4) 너무나도 뻔한 Access Denined 에러
패스워드도 맞고 root 계정도 맞는데 액세스 거부가 떴다 -> 패스워드를 숫자로만 변경했더니 해결됨
mysql> alter user 'root'@'localhost' identified with mysql_native_password by '1234';
mysql> flush privileges;
에러가 애초에 발생하지 않게 아래 사항을 미리 적용하도록 하자
1) JDBC Driver -jar파일을 나의 mysql 버전에 맞춤
2) mysql url의 timezone 설정
3) 비밀번호 간략화
4) version 직접 기입
결과
context.xml를 아래와 같이 설정하도록 한다.
<Context path="/UserChat" docBase="www">
<Resource
name="jdbc/UserChat"
auth="Container"
type="javax.sql.DataSource"
maxTotal="100"
maxIdle="30"
maxWaitMillis="10000"
username="root"
password="비밀번호"
version="8.0.25"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/UserChat?serverTimezone=Asia/Seoul"/>
<ResourceLink type="javax.sql.data.DataSource" name="jdbc/UserChat" global="jdbc/UserChat" />
</Context>
그리고 생성한 DB "UserChat"에 임의의 값을 넣은다음 확인하도록 한다,
왜인지 모르겠지만 getString("version()~~을 하면 에러발생
ResultSet rset = stmt.executeQuery("SELECT * FROM user; ");
while (rset.next()) {
out.println("MySQL Version : " + rset.getString(1));
}
728x90
반응형
'프로그래밍 > Java' 카테고리의 다른 글
[Java / 자바 / 자바 기초]기본적인 String 메서드들 (0) | 2023.12.12 |
---|---|
[JAVA / JAVA 기초 / 자바] printf() 란? (실습 링크 포함) (1) | 2023.12.12 |
[Java / Java 기초 / 자바] Scanner / JOptionPane 로 값 입력하기(JOptionPane 확인창 / 선택창 사용법) (0) | 2023.12.12 |
[JAVA / JAVA 기초 / 자바] For-Each란? (0) | 2023.12.12 |
[Java] 9. 파일 유형별로 나눠서 용량 계산하기 (1) | 2023.11.20 |