TIL

240일차(모험 149일차) - mysql 연동하기(port 변경)

haedal-uni 2022. 5. 13. 23:44
728x90

기능을 추가할 때마가 모든 페이지가 실행이 잘 되는지 확인하는데

매번 실행할 때마다 회원가입하고 로그인을 진행하는 게 너무 번거로워서 

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로 변경된 것을 확인 할 수 있다.

 

 

출처 : MariaDB 서비스 포트(port) 변경

 

 

 

netstat -a (-a : 모든 포트 번호 표시)

 

 

 

 


 

다시 실행을 시켰을 때

Access denied for user 'root'@'localhost' (using password: YES) 에러가 떴다.

비밀번호가 틀려서 생긴 오류이다.

참고 : [MySQL] mysql로그인 오류 / mysql 비밀번호 재설정

 

 

그러나 나는 비밀번호를 설정하지 않아서 비밀번호 변경을 시도했다.

cmd 에서 mysql -u root -p를 입력하면 된다고 하였으나

mysql은 내부 또는 외부 명령, 실행할 수 있는 프로그램~~ 아닙니다 에러가 떴다.

 

 

시작 메뉴에서 검색

 

 

환경 변수에 아래 설치 경로를 입력 후에 에러가 뜨지 않았다.

 

 

MySQL Installer - Community 에서 Install Path에 적힌 경로

 

 

[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 받고 실행하니깐 다시 제대로 띄워졌다. 😂

 

보여져야 할 화면  실제 나온 화면

* 회원가입 버튼과 로그인 버튼이 구분되어야 하는데 구분되지 않고 클릭이 안됨

 

728x90