현재 sqlite로 DB가 되어 있습니다. 배포를 목적으로 하니 DB를 postgres로 바꾸려고 합니다.
왜 postgres? https://techblog.woowahan.com/6550/
twitter 같은 글 작성 기능을 만듭니다. 추가/삭제만 지원하겠습니다. insert, select에 특화된 postgres를 택했습니다.
password, port를 기억합시다.
기존 strapi v4 프로젝트 config/database.js
참고) strapi v3
settings에 client와 filename이 있었는데,
Strapi v4에서는 client이 남아있고, connection 내에 filename이 생겨있습니다.
database.js 파일 내의 코드를 아래와 같이 변경합니다.
module.exports = ({ env }) => ({
connection: {
client: "postgres",
connection: {
host: env("DATABASE_HOST", "localhost"),
port: env.int("DATABASE_PORT", 5432),
database: env("DATABASE_NAME", "ddss"), // DDuck-SSang 프로젝트
username: env("DATABASE_USERNAME", "postgres"),
password: env("DATABASE_PASSWORD", "0000"),
schema: env("DATABASE_SCHEMA", "public"),
},
useNullAsDefault: true,
},
});
TypeScript
복사
실행해서 DB가 대체되었는지 확인해봅니다.
pg를 설치합니다.
코드는 다 맞으나 authentication 에러가 발생합니다.
아까 postgres 인스톨러로 설치하는 과정에서 입력한 비밀번호로 코드를 수정하거나 OS 계정의 비밀번호로 입력해도 통하지 않습니다.
이후 postgres 문제 때문에 많이 헤맸습니다. psql 명령어가 안 통합니다.
iterms에서 접속은 완료했습니다.
왜 접속하려고 했을까요?
postgres가 OS 계정의 비밀번호가 틀렸다는 메시지를 줬기 때문인데, 이걸 해결하기 위한 방법이 postgres에서 계정을 추가하는 방법이기 때문입니다.
직접 해봅니다.
module.exports = ({ env }) => ({
connection: {
client: "postgres",
connection: {
host: env("DATABASE_HOST", "localhost"),
port: env.int("DATABASE_PORT", 5432),
database: env("DATABASE_NAME", "ddss"),
username: env("DATABASE_USERNAME", "uncertainty"),
password: env("DATABASE_PASSWORD", "1q2w3e4r"),
schema: env("DATABASE_SCHEMA", "public"),
},
useNullAsDefault: true,
},
});
TypeScript
복사
드디어 잘 연결된 걸 볼 수 있습니다.