5주차 데이터 베이스 GUI, 디비 연동, timezone 설정
workbench 설치 후 connections 옆 + 버튼을 눌러줌
hostname : 서버가 있는 위치, 즉 내 컴퓨터를 나타내는 ip / localhost 라고 작성해도 됨
port : 데이터 베이스 설치할 때 설정함
schemes에 내가 CLI 로 작성한 데이터들을 확인할 수 있음
각 데이터 베이스의 테이블을 선택하면 아래에 컬럼들의 정보를 확인 가능
명령어 치기 전 원하는 스키마의 데이터 베이스를 더블 클릭
새로운 스키마 생성
디비 연동
npm 의 mysql2에 나온 예제코드
// Get the client
import mysql from "mysql2/promise";
// Create the connection to database
const connection = await mysql.createConnection({
host: "localhost",
user: "root",
password: "root",
database: "Youtube", //내가 만든 스키마
});
// A simple SELECT query
try {
const [results, fields] = await connection.query("SELECT * FROM `users`");
console.log(results); // results contains rows returned by server
console.log(fields); // fields contains extra meta data about results, if available
} catch (err) {
console.log(err);
}
하면
생긴 오류 (지피티 최고)
Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
(Use `node --trace-warnings ...` to show where the warning was created)
이런 오류가 났고
내 package.json에는
youtube에 대한 정보가 없었다.
그래서 npm init -y 해주고 "type": "module" 를 새로생긴 유튜버에 대한 정보에 넣어주시 해결됨!!!
비구조화
// A simple SELECT query
try {
const [results, fields] = await connection.query("SELECT * FROM `users`");
let { id, email, name } = results[0]; //배열의 0번째에 있는 개체를 비구조화함
console.log(id); // results contains rows returned by server
console.log(email);
console.log(name);
console.log(fields); // fields contains extra meta data about results, if available
} catch (err) {
console.log(err);
}
timezone 설정
데이터베이스의 타임스템프 값과 vscode로 출력한 타임스템프 출력값이 다름
SET GLOBAL time_zone = 'Asia/Seoul'
workbench에 설정
GLOBAL로 모든 스키마에 적용
- 시간이 맞춰지긴 했지만, 서울 시간은 아님
- time_zone에 제대로 세팅되지 않은 걸 확인
SET time_zone = 'Asia/Seoul';
위 명령어로 설정
- workbench에서 시간 바뀐 것 확인
그래도 노드 js에는 적용 안됨
+ vscode 시간 출력에 z 빼기
// Create the connection to database
const connection = await mysql.createConnection({
host: "localhost",
user: "root",
password: "root",
database: "Youtube", //내가 만든 스키마
dateStrings: true,
});
출력
- z빼려고 했더니 시간도 알아서 맞춰줌