에러 발생
라라벨 프로젝트에서 MSSQL 서버 연결을 시도하는데 아래 에러 메시지가 표시될 수 있다.
pdo_sqlsrv 드라이버가 로드되지 않아서 발생한다.
Error Message
Illuminate\Database\QueryException
could not find driver (SQL: select top 10 * from TA_ORDER_DATA)
드라이버 설치 확인
기존에 다른 프레임워크 혹은 레거시 코드로 MSSQL 서버와 연동을 하고 있었다면, 드라이버(so, dll) 자체가 없지는 않을 것이라 생각할 수 있지만 점검을 해 봐야 한다.
$ php -r "phpinfo();" | grep -i sqlsrv
Registered PHP Streams => https, ftps, compress.zlib, php, file, glob, data, http, ftp, sqlsrv, phar, zip
sqlsrv
sqlsrv support => enabled
sqlsrv.ClientBufferMaxKBSize => 10240 => 10240
sqlsrv.LogSeverity => 0 => 0
sqlsrv.LogSubsystems => 0 => 0
sqlsrv.SetLocaleInfo => 2 => 2
sqlsrv.WarningsReturnAsErrors => On => On
$ php -r "phpinfo();" | grep -i pdo
/etc/php/7.4/cli/conf.d/10-pdo.ini,
/etc/php/7.4/cli/conf.d/20-pdo_mysql.ini,
API Extensions => mysqli,pdo_mysql
PDO
PDO support => enabled
PDO drivers => mysql
pdo_mysql
PDO Driver for MySQL => enabled
pdo_mysql.default_socket => /var/run/mysqld/mysqld.sock => /var/run/mysqld/mysqld.sock
드라이버가 있는것 같기도 하고 없는것 같기도 하고 아리송할 때는 phpinfo() 를 확인한다.
아래처럼 PDO drivers 항목에 sqlsrv 가 존재해야 한다.
드라이버 적용
간단히 모듈 로드를 시도해 본다.
$ phpenmod pdo_sqlsrv
WARNING: Module pdo_sqlsrv ini file doesn't exist under /etc/php/7.4/mods-available
간단히 안되는 경우 늘 그랬듯이 mods-available 디렉토리에 ini 파일을 생성하거나 적당한 파일에 추가한다.
php.ini 파일에 extension=pdo_sqlsrv.so 라인을 추가하는 방법도 있다.
$ cat /etc/php/7.4/mods-available/pdo.ini
; configuration for php common module
; priority=10
extension=pdo.so
extension=pdo_sqlsrv.so
'코딩 > Laravel' 카테고리의 다른 글
라라벨 - 파일 업로드 (0) | 2024.06.24 |
---|---|
laravel - AJAX 전송 시 Content-Type 지정 (Error 405) (0) | 2024.06.24 |
Laravel - MSSQL 서버 연결 실패 오류 SSL routines:tls_process_server_certificate:certificate verify failed (0) | 2023.08.29 |
Laravel - 라라벨 GROUP BY 에러 SQLSTATE[42000]: Syntax error or access violation: 1055 (0) | 2023.02.08 |
Laravel - 리눅스 Ubuntu 라라벨 설치 (0) | 2022.06.24 |