Codeigniter/PHP检查是否可以连接到数据库

tim*_*son 5 php mysql database-connection codeigniter

我想用我的主数据库备份我的只读副本(即奴隶)数据库但这个简单的布尔我失败了:

$config['hostname'] = "myReadReplicaDatabase.com";
//...$config['other_stuff']; other config stuff...
$db_obj=$CI->load->database($config, TRUE);

if(!$db_obj){
     $config['hostname'] = "myMasterDatabase.com";
     $db_obj=$CI->load->database($config, TRUE);
}
Run Code Online (Sandbox Code Playgroud)

在终止我的只读副本数据库后,我希望布尔值得到评估,FALSE然后脚本使用我的主数据库.不幸的是,我收到了以下PHP错误:

Unable to connect to your database server using the provided settings.
Filename: core/Loader.php
Run Code Online (Sandbox Code Playgroud)

我想要的只是连接返回true或false,有人知道如何在Codeigniter中执行此操作吗?

tim*_*son 11

Codeigniter论坛上的这个帖子回答了我的问题.

关键是不要自动初始化数据库:

$db['xxx']['autoinit'] = FALSE; 
Run Code Online (Sandbox Code Playgroud)

要抑制错误,您可以设置此项

$db['xxx']['db_debug'] = FALSE; 
Run Code Online (Sandbox Code Playgroud)

然后在检查db状态的代码中,检查initialize()函数的TRUE/FALSE:

$db_obj = $this->database->load('xxx',TRUE);
  $connected = $db_obj->initialize();
  if (!$connected) {
  $db_obj = $this->database->load('yyy',TRUE);
} 
Run Code Online (Sandbox Code Playgroud)

这是我的整个配置文件以供将来参考:https://gist.github.com/3749863.

  • 论坛不是理解所必需的。我包含它只是为了感谢原作者。 (2认同)
  • `$this->database->load` 必须是 `$this->load->database` (2认同)