기능을 추가할 때마가 모든 페이지가 실행이 잘 되는지 확인하는데
매번 실행할 때마다 회원가입하고 로그인을 진행하는 게 너무 번거로워서
h2 대신 mysql을 활용해서 회원가입을 진행 안하게 끔 했다.
application.properties
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=1234
나는 port번호가 3306은 전에 mysql 사용할 때 작성한 데이터들이 존재해서
위에 작성한 port 번호와 username, password 대신 다른 걸로 작성했다.
포트 번호는 my.ini에 들어가서 3306으로 작성된 2개 부분을 3307로 변경 후 저장한다.
서비스에 들어가서 서비스 다시 시작을 누르면 3307로 변경된 것을 확인 할 수 있다.
netstat -a (-a : 모든 포트 번호 표시)
다시 실행을 시켰을 때
Access denied for user 'root'@'localhost' (using password: YES) 에러가 떴다.
비밀번호가 틀려서 생긴 오류이다.
참고 : [MySQL] mysql로그인 오류 / mysql 비밀번호 재설정
그러나 나는 비밀번호를 설정하지 않아서 비밀번호 변경을 시도했다.
cmd 에서 mysql -u root -p를 입력하면 된다고 하였으나
mysql은 내부 또는 외부 명령, 실행할 수 있는 프로그램~~ 아닙니다 에러가 떴다.
환경 변수에 아래 설치 경로를 입력 후에 에러가 뜨지 않았다.
[mysql] windows 'mysql'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다. /mysql 환경 변수 설정하기
다시 mysql -u root -p 를 입력했으나
ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost:3306' (10061)
라는 에러가 떴다.
그러나 대부분의 글의 오류 메세지는
ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061) 로
MySQL이 연결이 안되어서 서비스를 실행시키면 된다고 하는 글었다.
나는 대부분의 글들과는 다른 에러 메세지라서 방법을 몰랐다.
해결방법을 찾지 못하다가 포트 번호를 제외한
username과 password를 기본으로 입력 후 실행시켰더니
Unknown database test 에러가 떠서 console창에 create database test를 입력한 후
재 실행했더니 에러가 뜨지 않았다......?
그 후 실행을 시키면서 별의 별 에러를 발견했다.
Field 'ID' doesn't have a default value
Unknown column 'user0_.id' in 'field list'
Unknown column 'user0_.created_at' in 'field list'
등등...
h2-console 창을 참고하여 table을 작성했더니 Unknown 관련 오류는 뜨지 않았다.
Table 'test.hibernate_sequence' doesn't exist 에러가 떠서 아래 코드를 추가하면 된다고 했으나
@GeneratedValue(strategy = GenerationType.IDENTITY)
나는 아래 코드를 사용하여 1씩 증가를 시키고 있었기 때문에
@GeneratedValue(strategy = GenerationType.AUTO)
아래 코드를 application.properties에 추가했다.
spring.jpa.hibernate.use-new-id-generator-mappings= false
Table 'DBNAME.hibernate_sequence' doesn't exist
Field 'ID' doesn't have a default value 에러는 AUTO_INCREMENT를 체크하면 해결된다!
[에러] Field 'id' doesn't have a default value
그리고 회원가입을 시도 했더니 아래와 같이 db에 저장되었다.
이제 회원가입 없이 바로 로그인으로 진행할 수 있게 되었다..!!
행복하다😊
마지막 해프닝으로
중간에 회원가입 후 db에 저장되는지 test 해보는데 프론트가 이상하게 나와서
회원가입은 되는데 로그인은 안되는 화면이 띄워졌다.
(콘솔창이랑 네트워크 모두 오류가 안나와서 당황했었다)
github에서 front를 다시 pull 받고 실행하니깐 다시 제대로 띄워졌다. 😂
보여져야 할 화면 | 실제 나온 화면 |
![]() |
![]() |
* 회원가입 버튼과 로그인 버튼이 구분되어야 하는데 구분되지 않고 클릭이 안됨
'TIL' 카테고리의 다른 글
244일차(모험 153일차) - 코드 정리 (0) | 2022.05.17 |
---|---|
243일차(모험 152일차) - 게시글 기능 추가 (0) | 2022.05.16 |
239일차(모험 148일차) - 채팅 페이지 (0) | 2022.05.12 |
238일차(모험 147일차) - 프로젝트 (0) | 2022.05.11 |
237일차(모험 146일차) - ⭐문제 해결⭐ (0) | 2022.05.10 |