【发布时间】:2012-09-18 19:40:10
【问题描述】:
我想用我的主数据库备份我的只读副本(即从属)数据库,但我做的这个简单的布尔值失败了:
$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);
}
终止我的只读副本数据库后,我希望布尔值评估为FALSE,然后脚本使用我的主数据库。不幸的是,我得到了以下 PHP 错误:
Unable to connect to your database server using the provided settings.
Filename: core/Loader.php
我想要的只是连接返回真或假,有人知道如何在 Codeigniter 中执行此操作吗?
【问题讨论】:
-
使用第二个参数为 TRUE 手动连接到 codeigniter 中的数据库,将返回可以运行查询的数据库对象。如果连接由于某种原因被拒绝,codeigniter 将停止您的应用程序并为您抛出该错误。
-
我知道这一点,但如何让它使用第二个配置
hostname而不是抛出错误? -
@wes 你能提供一个证明
try/catch的答案吗? -
查看 CI 文档,有一个配置选项可以抑制 db 错误,尝试将其添加到第一个配置数组中,看看效果如何;键名是 $config['db_debug'] = false;然后在第二个数据库配置中将其设置回 true。
-
@Ibere 谢谢,不幸的是,抑制调试错误所做的只是防止长时间超时和显示错误消息。它不会使 $db_obj 返回 FALSE 以便使用我的主数据库配置。
标签: php mysql codeigniter database-connection