Perl에서 DBD::mysql.pm 리로드 실패 문제 해결

Perl 스크립트 실행 중 다음과 같은 오류가 발생한 경우, 이를 해결하는 방법을 설명합니다.

OS: Kylin Linux Advanced Server release V10 (Tercel)

MySQL에 연결할 수 없습니다: install_driver(mysql) failed: Attempt to reload DBD/mysql.pm aborted.
Compilation failed in require at (eval 77) line 3.

이러한 오류는 주로 Perl 모듈 DBD::mysql과 관련된 라이브러리가 올바르게 로드되지 않아 발생합니다. 아래 단계를 통해 문제를 해결할 수 있습니다.


문제 분석

먼저, 해당 오류는 다음 요소들로 인해 발생할 가능성이 큽니다:

  1. Perl의 DBD::mysql 모듈이 제대로 설치되지 않았거나 손상되었음.
  2. 필요한 공유 라이브러리(예: libmariadb.so)가 시스템에 존재하지 않음.

확인 절차

  1. perl-DBD-MySQL 패키지 확인 현재 설치된 MySQL 관련 패키지를 검사합니다.
[root@localhost ~]# rpm -qa | grep -i --color mysql
perl-DBD-MySQL-4.046-6.ky10.x86_64
  1. mysql.so 위치 확인 perl-DBD-MySQL 패키지에서 제공하는 파일들을 조사합니다.
[root@localhost ~]# rpm -ql perl-DBD-MySQL
/usr/lib64/perl5/vendor_perl/auto/DBD/mysql/mysql.so
  1. mysql.so 의존성 확인 해당 파일이 필요로 하는 공유 라이브러리를 확인합니다.
[root@localhost ~]# ldd /usr/lib64/perl5/vendor_perl/auto/DBD/mysql/mysql.so
    libmariadb.so.3 => not found
    libz.so.1 => /lib64/libz.so.1
    libdl.so.2 => /lib64/libdl.so.2
    ...

위 결과에서 libmariadb.so.3가 "not found" 상태임을 확인할 수 있습니다.


해결 방법

  1. libmariadb.so.3 설치 필요한 라이브러리를 설치합니다.
yum install -y mariadb-libs
  1. 라이브러리 경로 업데이트 라이브러리 경로를 시스템에서 인식하도록 설정합니다.
ldconfig
  1. 확인 다시 ldd 명령어를 사용하여 의존성을 확인합니다.
[root@localhost ~]# ldd /usr/lib64/perl5/vendor_perl/auto/DBD/mysql/mysql.so
    libmariadb.so.3 => /lib64/libmariadb.so.3
    libz.so.1 => /lib64/libz.so.1
    libdl.so.2 => /lib64/libdl.so.2
    ...

이제 모든 의존성이 제대로 로드되고 있음을 확인할 수 있습니다.

  1. 필요시 perl-DBD-MySQL 재설치 문제가 여전히 남아 있다면 해당 모듈을 재설치합니다.
yum reinstall -y perl-DBD-MySQL

추가 참고사항

  • 만약 다른 버전의 MySQL 또는 MariaDB 클라이언트를 사용 중이라면, 해당 버전에 맞는 라이브러리를 설치해야 합니다.
  • cpan을 통한 수동 설치도 고려할 수 있지만, 일반적으로 패키지 관리자(yum)를 통해 설치하는 것이 더 안정적입니다.

위 단계를 완료하면 install_driver(mysql) 오류가 해결됩니다.

태그: perl DBD::mysql mariadb-libs

7월 10일 22:29에 게시됨