Skill/기반기술
linux] postgresql-odbc 설치 및 python DB_DRIVER 변수 수정
진열사랑
2025. 5. 23. 14:55
에러 메시지:
resultMessage": "('01000', \"[01000] [unixODBC][Driver Manager]Can't open lib 'PostgreSQL Unicode(x64)' : file not found (0) (SQLDriverConnect)\")"
이 에러는 Python Flask 애플리케이션이 ODBC를 통해 PostgreSQL 데이터베이스에 연결하려 할 때 드라이버를 찾지 못해서 발생한 것입니다.
🔍 원인 요약
- unixODBC는 PostgreSQL에 연결하기 위해 ODBC 드라이버를 사용하려고 하는데, 설정된 드라이버 'PostgreSQL Unicode(x64)'를 찾을 수 없습니다.
- 드라이버가 설치되지 않았거나, odbcinst.ini 설정 파일에 정의되어 있지 않거나, 잘못된 경로를 가리키고 있을 수 있습니다.
✅ 해결 방법
1. PostgreSQL ODBC 드라이버 설치
리눅스에서는 다음 명령어로 드라이버 설치:
sudo apt-get update
sudo apt-get install odbc-postgresql
Red Hat 계열(RHEL, CentOS 등)에서는:
sudo yum install postgresql-odbc
2. ODBC 설정 파일 확인
/etc/odbcinst.ini에 드라이버가 정의되어 있는지 확인:
[PostgreSQL Unicode(x64)]
Description = ODBC for PostgreSQL
Driver = /usr/lib/x86_64-linux-gnu/odbc/psqlodbcw.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libodbcpsqlS.so
- Driver와 Setup 경로가 실제 파일과 일치하는지 확인.
- 경로가 다르면 find나 locate 명령어로 드라이버 경로를 찾으세요:
find /usr -name "psqlodbcw.so"
3. 드라이버 이름 확인
코드에서 사용 중인 드라이버 이름이 설정과 일치해야 합니다.
예시: Python에서 사용하는 연결 문자열 (예: pyodbc)
import pyodbc
conn = pyodbc.connect(
"DRIVER={PostgreSQL Unicode(x64)};SERVER=localhost;DATABASE=test;UID=user;PWD=password"
)
- 여기서 DRIVER={PostgreSQL Unicode(x64)} 부분이 odbcinst.ini의 [PostgreSQL Unicode(x64)]와 정확히 일치해야 합니다.
- 이름이 다르면 에러가 발생합니다.
🧪 테스트 방법
설치 및 설정 완료 후, 다음 명령어로 ODBC 연결을 테스트하세요:
isql -v testdsn user password
(DNS가 설정되어 있을 경우)
✅ 요약
항목 확인 사항
드라이버 설치 | odbc-postgresql 설치 여부 |
odbcinst.ini | [PostgreSQL Unicode(x64)] 정의 및 경로 |
연결 문자열 | 드라이버 이름이 정확히 일치하는지 |
파일 경로 | 드라이버 경로가 실제 존재하는지 |