회사내에서 프로젝트를 진행할 때는 대부분 NestJS, TypeORM, RestAPI를 기본 스펙으로 잡고 진행하는데 외부에서 진행되던 프로젝트가 NestJS, TypeORM에 Liquibase 라는 처음 접하는 데이터베이스 버전 관리 툴을 사용하였는데 내부로 인수인계가 다 되진 않은 상태에서 local 환경에서 개발하다 $ npm run start:dev를 했는데 정상적인 상황이라면 아래처럼 서버가 실행되어야 정상이다. >>> liquibase update start 뒤에 liquibase가 실행된다는 로그가 남아있는 채로 update end 로그가 뜨지 않고, 3 ~ 4분 뒤에 Caused by: liquibase.exception.LockException: Could not acquire chang..
TypeORM에서 logging 옵션 중 query 옵션을 사용해서 GET 메소드 API 호출 시 날라가는 쿼리의 실행 계획을 출력하고 시각화하였다. SELECT "activity"."id" AS "activity_id", "activity"."created_at" AS "activity_created_at", "activity"."title" AS "activity_title", "activity"."content" AS "activity_content", "activity"."subject" AS "activity_subject", "activity"."end_date" AS "activity_end_date", "activity"."images" AS "activity_images", "activi..
PostgreSQL의 경우, MySQL과는 다르게 대소문자를 구별하는 case-sensitive한 특성을 가진다. 이전 포스트에서 createQueryBuilder와 SQL문의 LIKE를 사용하여 검색 API를 만들었다. 해당 포스트에서 LIKE문을 사용하였는데 데이터베이스를 PostgreSQL을 사용하고 있어 대소문자를 구분해서 검색하려면 ILIKE를 사용해야한다. LIKE문과 ILIKE문의 차이점은 LIKE문의 경우, 대소문자를 구분하지 못하지만, ILIKE문을 활용할 경우, 대소문자를 구분한다.(PostgreSQL 한정)
개발/NestJS 2022. 9. 29. 08:20
회사내에서 프로젝트를 진행할 때는 대부분 NestJS, TypeORM, RestAPI를 기본 스펙으로 잡고 진행하는데 외부에서 진행되던 프로젝트가 NestJS, TypeORM에 Liquibase 라는 처음 접하는 데이터베이스 버전 관리 툴을 사용하였는데 내부로 인수인계가 다 되진 않은 상태에서 local 환경에서 개발하다 $ npm run start:dev를 했는데 정상적인 상황이라면 아래처럼 서버가 실행되어야 정상이다. >>> liquibase update start 뒤에 liquibase가 실행된다는 로그가 남아있는 채로 update end 로그가 뜨지 않고, 3 ~ 4분 뒤에 Caused by: liquibase.exception.LockException: Could not acquire chang..
개발/PostgreSQL 2022. 1. 24. 08:20
TypeORM에서 logging 옵션 중 query 옵션을 사용해서 GET 메소드 API 호출 시 날라가는 쿼리의 실행 계획을 출력하고 시각화하였다. SELECT "activity"."id" AS "activity_id", "activity"."created_at" AS "activity_created_at", "activity"."title" AS "activity_title", "activity"."content" AS "activity_content", "activity"."subject" AS "activity_subject", "activity"."end_date" AS "activity_end_date", "activity"."images" AS "activity_images", "activi..
개발/PostgreSQL 2022. 1. 16. 01:43
포스트를 저장하는 API에서 500번대 에러가 발생하였다. 에러 로그를 찍어보니 "QueryFailedError: dupliacte key value violates unique constraint "PK_eff3e46d24d416b52a7e0ae4159"라고 출력되었다. 원인 TypeORM에서 @Entity를 통해 테이블을 생성하고, id 칼럼을 @PrimarayGeneratedColumn을 사용하여 primary key로 지정하고 unique value로 지정하고 PostgreSQL로 매핑하였는데 데이터를 복사하여 테이블로 이동시키면서 시퀀스 객체와 테이블의 키 값에 차이가 나면서 insert시 Duplicate key value violates unique constraint 에러가 발생된다. 해결..
개발/PostgreSQL 2021. 10. 5. 08:20
PostgreSQL의 경우, MySQL과는 다르게 대소문자를 구별하는 case-sensitive한 특성을 가진다. 이전 포스트에서 createQueryBuilder와 SQL문의 LIKE를 사용하여 검색 API를 만들었다. 해당 포스트에서 LIKE문을 사용하였는데 데이터베이스를 PostgreSQL을 사용하고 있어 대소문자를 구분해서 검색하려면 ILIKE를 사용해야한다. LIKE문과 ILIKE문의 차이점은 LIKE문의 경우, 대소문자를 구분하지 못하지만, ILIKE문을 활용할 경우, 대소문자를 구분한다.(PostgreSQL 한정)