728x90
개발환경
- node: v20.10.0
- nestjs: v10.0.0
- typeorm: v0.3.20
- mysql2: v3.9.2
- mysql: v8.0.0
문제. AsText does not exist
Mysql의 Point 타입을 사용해서 좌표 관련 기능을 구현하던 중, 문제가 발생했다.
typeorm의 조회관련 메서드를 사용해 DB에 SELECT 쿼리를 보냈더니 다음과 같은 에러가 발생했다.
QueryFailedError: FUNCTION db-name.AsText does not exist
원인.
대략 찾아보니 타 DB에는 공간(Spatial) 관련 타입을 처리할 때, AsText와 같은 함수가 존재해 이를 이용해서 조회를 할 수 있다고 한다.
그래서 Typeorm이 DB에서 해당 타입을 조회할 때, AsText를 사용하여 데이터를 가져온다.
하지만, Mysql 8버전에는 해당 함수가 없어서 위와 같은 오류가 발생한다.
해결.
검색을 해보니 스택오버플로우에서 나와 같은 문제를 겪은 사람이 있었다.
TypeOrm 모듈을 설정할 때, AsText 함수를 사용하여 조회하도록 하는 옵션을 끄면 간단히 해결된다.
TypeOrmModule.forRoot({
legacySpatialSupport: false,
그리고 알고보니 설명서에도 친절하게 나와있다.
728x90
'개발일지 > Node.js' 카테고리의 다른 글
Prisma vs TypeORM 벤치마크 (0) | 2024.04.09 |
---|---|
Nestjs - Shared modules : 의존성 주입을 통하여 모듈 공유하기 (0) | 2024.02.29 |
TypeORM - @Column({ unique : true }) vs @Unique() (0) | 2024.02.23 |
SQL Injection 방지 - 권장방식에는 다 이유가 있지.. (0) | 2024.01.31 |