Notice
Recent Posts
Recent Comments
Link
«   2026/03   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Tomato Basil

5-4. 테이블 생성, 디비 연동, timezone 생성 (타임존설정오류오류오류) 본문

DataBase

5-4. 테이블 생성, 디비 연동, timezone 생성 (타임존설정오류오류오류)

salt pepper 2024. 5. 9. 23:54

MySQL 워크벤치 - GUI 방식으로

 

MySQL 워크벤치를 다운로드 해주었다.

 

 

테이블 생성하기

 

 

GUI 방식으로 스키마를 만들기 위해

스키마 창에서 Create Schema를 선택한다.

 

 

그리고 코드가 아니라 더블클릭(..)을 해서

직접 테이블 속성을 추가/수정 해준다.

위는 users 테이블이다.

 

 

아래는 channels 테이블이다.

foreign key인 user_id를 user 테이블의 id를 참조하도록 설정했다.

 

테이블 생성 메인 화면

 

외래키 추가하는 화면

 

Apply 누르기 전에 쿼리를 직접 확인할 수 있게 보여주는 화면

 

테이블에 데이터 추가하기

 

 

위와 같이 각 테이블의 오른쪽의 그리드 표시를 누르면 

새로운 레코드를 추가할 수 있게 된다.

 

 

이렇게 추가해보았다.

id는 직접 적거나, auto increment를 적용시키면 되는데

두 방법 중 하나를 처음부터 끝까지 고수하는 것이 좋다.

 

 

 

 

 

 

데이터베이스 연동하기

 

 

python에서 mysql과 연동하기 위해 pysql을 사용했던 적이 있는데, 

그것과 비슷한 용도인 것 같다.

npm 웹사이트를 참고해서 mysql2를 다운받았다.

VSCode의 터미널창에서 다운받았다.

 

 

그리고 First Query의 해당 부분을 복붙해왔다.

 

실행을 해보면, 디버그 콘솔창에 디비에서 가져온 정보가 잘 출력이 된다.

하지만 나는 json 형태로 출력이 되지는 않는데, 왜 그런 것일까??....

 

 

 

 

 

created_at 속성 추가

 

TIMESTAMP 속성을 가지는 created_at 열 하나를 생성했다.

기본값을 CURRENT_TIMESTAMP() 혹은 NOW로 설정하면 레코드 생성 시점이 created_at에 기록된다.

 

 

새로운 레코드를 created_at 을 공란으로 두고 만들었는데

apply하고 실행을 하니까 자동으로 생성 시점이 created_at에 기록되었다.

 

 

그런데 MySQL workbench 에서 실행 시 기록되는 생성 시점과

.js 파일에서 mysql2 모듈을 이용하여 디비와 연동할 때 기록되는(VSCode에 출력되는) 생성 시점이 다르다.

 

SET GLOBAL time_zone = 'Asia/Seoul';

 

따라서 위 라인을 MySQL에 먼저 적용시켜본다.