Uncaught PDOException 에러
이 에러메시지로 골치를 앓고 있다면 아마도 이 웹사이트에 잘 찾아오셨다. 본인도 이 에러메시지 때문에 몇 시간을 허비하다가 결국 하나씩 문제점을 체크해서 방법을 찾았다. 당신의 시간은 소중하니, 바로 시작해보자.
기본예제로 test.php를 아래처럼 작성했다. 그리고 테스트를 하면서 하나하나 체크해나가자. 일단, 기본 전제는 본인의 패스워드를 제대로 입력했다는 것을 깔고 간다. 혹시 특수문자가 많이 들어가 있다면, 간단한 문자로 바꿔서도 테스트해보길 바란다.
1 2 3 | <? php new PDO(‘mysql:host=localhost;dbname=testdb’, ‘root’, ‘자신의 패스워드’); ?> | cs |
(1) php.ini에서 extension 설정
만약 PDO관련 extension 설정이 제대로 되어 있지 않다면, 아래와 같은 could not find driver 에러메시지가 발생했을 것이다. 여기에 들어 오신 분들은 아마도 이 에러 메시지 때문은 아닐 것이다. 대부분 php.ini 파일에서 extension을 잘 설정해줬을 것으로 생각된다.
Fatal error: Uncaught PDOException: could not find driver in C:\Bitnami\wampstack-7.4.12-0\apache2\htdocs\test.php:3 Stack trace: #0 C:\Bitnami\wampstack-7.4.12-0\apache2\htdocs\test.php(3): PDO->__construct('mysql:host=127....', 'root', '111111') #1 {main} thrown in C:\Bitnami\wampstack-7.4.12-0\apache2\htdocs\test.php on line 3
하지만 혹시라도 설정을 제대로 하지 않았다면, C:\Bitnami\wampstack-7.4.12-0\php\php.ini 파일을 열어 보자. 프로그램 설치 경로는 각 개인마다 다를 수 있으니 자신에 맞는 경로를 찾아가자. php.ini 파일을 열어서 ;extension=pdo_mysql 를 찾아서 앞의 주석 세미콜론 ;을 지워서 extension=pdo_mysql 으로 수정해준다. 그리고 extension_dir=”ext”로 잘 지정되어 있는지 확인한다. 이 경로는 C:\Bitnami\wampstack-7.4.12-0\php\ext를 뜻하는데, 이 폴더 안으로 가면 php_pdo_mysql.dll 파일이 있다. 이 파일을 활성화시킨다는 뜻이다. php.ini 파일을 수정했다면 웹서버(아파치)를 다시 시작해야한다는 것도 잊지 말자. 다시 시작하지 않으면 파일 정보가 반영되지 않는다.
;extension=pdo_mysql ☞ extension=pdo_mysql extension_dir = "ext"
이렇게 설정했는데도 에러메시지가 나온다면 다음 단계로 넘어가자.
(2) localhost를 127.0.0.1로 바꿔보자.
wamp의 경우에는 localhost를 127.0.0.1로 바꿔야 작동하는 경우가 있다. localhost가 자신 컴퓨터의 서버를 가리키는 도메인이라고 한다면, 127.0.0.1은 자신 컴퓨터의 서버를 가리키는 ip주소에 해당한다. 이 ip주소는 모든 컴퓨터에서 동일하다. 아래의 php 코드처럼 host=127.0.0.1로 바꿔서 테스트해보자.
1 2 3 | <? php new PDO(‘mysql:host=127.0.0.1;dbname=testdb’, ‘root’, ‘자신의 패스워드’); ?> | cs |
그래도 에러가 발생한다면 걱정말고 다음 단계로 넘어가자.
(3) 포트번호를 확인하자
포트번호가 안 맞아서 제대로 MySQL서버에 접근을 못하고 있을 수도 있다. 이걸 해결하기 위해 2가지 방법이 있는데, 하나는 php파일에서 현재 설정된 포트번호로 바꿔주는 방법이 있고, MySQL 포트번호를 기본값 3306로 바꿔주는 방법이 있다. 개인적으로는 전자의 방법을 선호하는데, 설명은 후자를 먼저하고 전자를 설명하겠다.
MySQL 포트번호를 기본값 3306로 바꿔주는 방법:
일단 먼저 MySQL에 설정된 포트번호를 확인해보자. 여러방법으로 확인할 수 있는데, 직접파일을 열어서 확인해보자. MySQL이 설치된 파일 경로에 C:\Bitnami\wampstack-7.4.12-0\mysql\my.ini 파일이 있을 것이다. 이 파일을 열면, [mysqld] 아래에 port=XXXX이 보일 것이다. 이것을 port=3306으로 바꾸고 저장한뒤, MySQL Database를 재시작하자. 웹서버가 아니라 MySQL Database를 재시작해야한다. 그리고 test.php 파일을 실행해보면, 아마도 에러 메시지가 안 나올것이다. 축하한다. 덤으로 다음 방법도 익혀두자.
[mysqld]
set basedir to your installation path
basedir="C:/Bitnami/wampstack-7.4.12-0/mysql"
set datadir to the location of your data directory
datadir="C:/Bitnami/wampstack-7.4.12-0/mysql/data"
port=3307
☞ port=3306
php파일에서 현재 설정된 포트번호로 바꿔주는 방법:
앞에서 확인한 포트 번호가 3306이 아니라 예를들어 3307이라고 한다면, my.ini에서 바꾸지 말고 php파일에서 port번호를 지정해주는 방법이 있다. 아래와 같이 port=3307를 추가로 기입하고, php파일을 불러와보자. MySQL Database의 재시작은 필요없다. 아마도 에러메시지가 사라졌을 것이다. 정말 정말 고생 많았다. 축하한다.
1 2 3 | <? php new PDO(‘mysql:host=127.0.0.1;dbname=testdb;port=3307’, ‘root’, ‘자신의 패스워드’); ?> | cs |




