2016-11-21 2 views
0

데이터베이스에 연결하는 데 문제가 있습니다. 특히 시스템에 액세스하려고하는데 데이터베이스가 응답하지 않습니다.시작시 데이터 베이 연결 오류

내 services.php 파일에 오류가 발생했습니다.

 try{ 
$di->set('db', function() use ($config) { 
    $config = $config->get('database')->toArray(); 
    $dbClass = 'Phalcon\Db\Adapter\Pdo\\' . $config['adapter']; 
    if (stripos($config['adapter'], 'Mysql')!== false) { 
     $mi_conf = array(
      "host" => $config['host'], 
      "username" => $config['username'], 
      "password" => $config['password'], 
      "dbname" => $config['dbname'], 
      "options" => array(
       PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8' 
      ) 
     );  
    } else { 
     $mi_conf = array(
      "dbname" => '//'.$config['host'].'/'.$config['dbname'], 
      "username" => $config['username'], 
      "password" => $config['password'], 
      'charset' => 'utf8' 
     ); 
    } 

    unset($config['adapter']); 

    return new $dbClass($mi_conf); 
}); 
} catch (Exception $e) { 
    $error .= 'db, '; 
    return null; 
} 

거기 변경해야 할 것이다 또는 나는 각 모델에서 각각의 호출을 변경해야하는 경우 나도 몰라 :

는 그리고 이것은 코드입니다.

어떤 조언이 필요합니까?

감사합니다.

+0

무엇이 오류입니까? – dubes

+0

연결 시간이 초과되었습니다. 데이터베이스가 오프라인 상태 였지만 다시 켜기를 원하지만이 오류를 포착하고 싶습니다. 고마워. – Darkerviti

답변

1

코드는 오류없이 보입니다. setShared를 사용하여 데이터베이스에 여러 번 연결하지 않거나 구성의 "영구적"속성을 적용합니다. 어쩌면 속임수 일 수도 있습니다. 그런데 예외를 잡을 수 있도록 try catch를 서비스가 만들어진 순간으로 변경하십시오.

 $di->setShared('db', function() use ($config) { 
try { 
      $config = $config->get('database')->toArray(); 
      $dbClass = 'Phalcon\Db\Adapter\Pdo\\' . $config['adapter']; 
      if (stripos($config['adapter'], 'Mysql') !== false) { 
       $mi_conf = array(
        "host"  => $config['host'], 
        "username" => $config['username'], 
        "password" => $config['password'], 
        "dbname" => $config['dbname'], 
        "persistent" => false, 
        "options" => array(
         PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8', 
        ), 
       ); 
      } else { 
       $mi_conf = array(
        "dbname" => '//' . $config['host'] . '/' . $config['dbname'], 
        "username" => $config['username'], 
        "password" => $config['password'], 
        "persistent" => false, 
        'charset' => 'utf8', 
       ); 
      } 

      unset($config['adapter']); 

      return new $dbClass($mi_conf); 
} catch (Exception $e) { 
     $error .= 'db, '; 
     return null; 
    } 
     });