programing

PDO 연결 테스트

css3 2023. 7. 29. 08:49

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')));
}

자세한 내용은 다음 링크를 참조하십시오.

PDO와 함께 MySQL 사용

오류 및 오류 처리

@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