작업을 하던 중 Database와 연결이 계속해서 끊어지는 상황이 발생…
Prisma를 사용해 데이터베이스와 연결한 후 연결을 닫지 않으면, 데이터베이스의 연결 수가 한정되어 있기 때문에 연결을 닫지 않은 상태로 여러 번 요청을 보내게 되면 연결 수가 초과되어 더 이상 새로운 연결을 할 수 없게 됩니다.
원인
Prisma에서 데이터베이스에 접근할 때마다 새로운 연결을 만들고, 그 연결을 명시적으로 닫지 않으면 연결을 재사용하지 못하고 계속해서 새로 연결을 시도하게 됩니다. 데이터베이스 서버에는 연결 수에 제한이 있기 때문에, 이 제한을 초과하면 더 이상 새 연결을 만들 수 없습니다.
해결
이를 해결하려면 데이터베이스와의 연결을 명시적으로 닫아 연결 수를 효율적으로 관리해야 합니다. 이를 위해 Prisma에서 제공하는 finally 블럭을 사용하여 연결을 종료하는 방법을 적용할 수 있습니다. finally 블럭은 예외가 발생하든 안 하든 항상 실행되므로, 코드 실행이 완료된 후 연결을 확실히 끊을 수 있습니다.
- try-catch 블럭: try 블럭 안에서 Prisma를 통해 데이터베이스 작업을 시도합니다. 예외가 발생할 경우, catch 블럭에서 예외를 처리할 수 있습니다.
- finally 블럭: finally 블럭 안에서 prisma.$disconnect()를 호출하여 데이터베이스 연결을 명시적으로 종료합니다. 이 코드가 항상 실행되기 때문에 예외가 발생하더라도 연결을 끊을 수 있습니다.