PostgreSQL 호환성 전수검사
결론
DocumentLibrary는 현재 MySQL 전용 저장소다. PostgreSQL driver, PostgreSQL schema, PostgreSQL migration이 존재하지 않으므로 PostgreSQL DATABASE_URL을 그대로 주입해 배포할 수 없다.
확인 결과
| 영역 | 현재 상태 | 판정 |
|---|---|---|
| DB driver | mysql2/promise만 사용 | PostgreSQL 미지원 |
| Drizzle schema | 모든 테이블이 mysqlTable·MySQL column builder 사용 | PostgreSQL 미지원 |
| Drizzle config | dialect: "mysql" 고정 | PostgreSQL migration 생성 불가 |
| migration | drizzle/migrations 10개, MySQL DDL | PostgreSQL에서 실행 불가 |
| transaction | beginTransaction·PoolConnection 사용 | PostgreSQL adapter로 교체 필요 |
| upsert/result | MySQL pool SQL 중심 | PostgreSQL query/result 정규화 필요 |
| deployment | 별도 PostgreSQL 분기 없음 | DATABASE_DIALECT 도입 필요 |
주요 MySQL 전용 구문
스키마와 migration에 AUTO_INCREMENT, ON UPDATE CURRENT_TIMESTAMP, MySQL 외래키·인덱스 문법, backtick 식별자, MySQL JSON 타입이 포함되어 있다. server/db.ts는 mysql.createPool()과 connection.beginTransaction()에 고정되어 있고, portal state 저장도 ON DUPLICATE KEY UPDATE를 사용한다.
운영 권고
DocumentLibrary를 PostgreSQL로 운영하려면 단순 환경변수 변경이 아니라 PostgreSQL schema 파일, PostgreSQL migration 폴더, pg pool, transaction adapter, JSON/date/boolean 변환, upsert 분기, 테스트 fixture를 함께 도입해야 한다. 그 전까지는 DocumentLibrary에는 MySQL 전용 DATABASE_URL만 사용해야 하며, ProcessCenter·DirectoryService의 PostgreSQL URL을 공유하면 안 된다.
이번 점검에서는 동작 계약을 깨뜨릴 수 있는 부분을 임의로 반쪽 마이그레이션하지 않고, 저장소가 PostgreSQL을 지원하지 않는 상태를 명확히 기록했다.