PDO 연결 테스트
내 앱 중 하나에 대한 설치 프로그램을 작성 중인데 기본 데이터베이스 설정을 테스트할 수 있으면 좋겠습니다.
PDO를 사용하여 유효한 데이터베이스 연결과 유효하지 않은 데이터베이스 연결을 테스트할 수 있습니까?
다음 코드가 있습니다.
try{
$dbh = new pdo('mysql:host=127.0.0.1:3308;dbname=axpdb','admin','1234');
die(json_encode(array('outcome' => true)));
}catch(PDOException $ex){
die(json_encode(array(
'outcome' => false,
'message' => 'Unable to connect'
)));
}
문제는 스크립트가 DB에 연결할 수 없다고 말하는 대신 스크립트 실행 시간인 60초가 지날 때까지 연결을 시도한다는 것입니다.
감사해요.
데이터베이스에 연결할 때 오류 모드를 설정해야 합니다.
try{
$dbh = new pdo( 'mysql:host=127.0.0.1:3308;dbname=axpdb',
'admin',
'1234',
array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
die(json_encode(array('outcome' => true)));
}
catch(PDOException $ex){
die(json_encode(array('outcome' => false, 'message' => 'Unable to connect')));
}
자세한 내용은 다음 링크를 참조하십시오.
@Sasscha Galley가 이미 언급했듯이 오류 모드를 예외 모드로 설정해야 합니다.그러나 경우에 따라 응답을 기다리는 시간이 길어지지 않도록 속성도 설정해야 합니다.
설명서에는 MySQL의 경우 이 특성의 동작은 드라이버에 따라 다르다고 나와 있지만 연결 시간 초과입니다.여기에 드라이버 소스 코드의 짧은 부분이 있습니다.
long connect_timeout = pdo_attr_lval(driver_options, PDO_ATTR_TIMEOUT, 30 TSRMLS_CC);
예를 들어 이 답변의 댓글에서 보듯이(그러나 다른 곳은 거의 없기 때문에 여기서 더 잘 보이도록 했습니다), "고전적"PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
해결책이 항상 작동하는 것은 아닙니다.
의 구현PDO::ERRMODE_EXCEPTION
고장이 나서, 경우에 따라서는 "이상한" 것처럼 보입니다.
예:
경고: PDO::__construct() [pdo.--construct]:[2002] 대상 기계가 적극적으로 거부하여 연결이 되지 않았습니다.(tcp://localhost:3306을 통해 연결할 수 없음) 34번 줄의 [...] db.tb
코드:
try {
$this->pdo = new PDO($cfg['DB'], $cfg['DB_USER'], $cfg['DB_PASS'],
array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
} catch {
echo("Can't open the database.");
}
예외가 던져집니다(그리고 잡혔습니다).제 메시지를 볼 수 있습니다.
따라서 필요한 해결 방법으로 실제로 청결하게 유지하기 전에 (이 경우에는 "배수기 연산자"라고 부릅시다)를 설치해야 합니다.
PDO 끝에 닫는 괄호가 누락되었습니다.:ERRMODE_EXCENTION.
해야 할 일:
$this->pdo = new PDO($cfg['DB'], $cfg['DB_USER'], $cfg['DB_PASS'],
array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
언급URL : https://stackoverflow.com/questions/6263443/pdo-connection-test
'programing' 카테고리의 다른 글
요소에 jQuery를 사용하는 CSS 클래스가 있는지 확인합니다. (0) | 2023.07.29 |
---|---|
CSS에서 모든 하위 요소를 재귀적으로 선택 (0) | 2023.07.29 |
Oracle 저장 프로시저 마지막 수정 날짜 가져오기 (0) | 2023.07.29 |
메서드 apis(java.util.function)입니다.ApiSelectorBuilder 유형의 술어)는 적용되지 않습니다. (0) | 2023.07.29 |
iPhone UI 테이블 보기.음악 앱처럼 알파벳 단일 목록을 설정하는 방법은 무엇입니까? (0) | 2023.07.29 |