-2

我有一个处理我的数据库连接的函数。如果我的主数据库不可用,我想使用备份数据库。我尝试使用下面的代码这样做,但它不起作用......

$host = 'xxx';
$database = 'xxx';
$login = 'xxx';
$pass = 'xxx';

if (! mysql_connect( $host, $login, $pass ) )
{
    // try to connect to backup db
    $host = 'yyy';
    $database = 'yyy';
    $login = 'yyy';
    $pass = 'yyy';
mysql_connect ( $host, $login, $pass ) or die ( "Failed to connect to the database: " . mysql_error());
}
mysql_select_db ( $database ) or die ( "Failed to find the database" . mysql_error());
mysql_query("SET NAMES 'utf8'");

我确定我的连接参数,所以问题不存在

编辑:我使用的是旧版本的 php,所以我仅限于 Mysql_* 我的第一台服务器当前已关闭,并且我收到“警告:mysql_connect() [function.mysql-connect]:连接太多...' 错误

事实上,我的问题是,如果第一次连接失败,我不需要打印此警告消息......

4

3 回答 3

2

请注意 mysql_* 已弃用,请使用更安全的 mysqli_ 或 PDO。

您是否尝试过输出错误?我在您的代码中没有看到它。

我已经很久没有使用mysql_了,但是尝试使用以下命令输出错误:*mysql_error()

如前所述,这可能是各种问题:

  • mysql没有启动
  • 防火墙阻止连接
  • 不使用默认端口
  • ...

编辑:此外,您可能需要考虑为数据库故障等事件设置复制。

于 2013-09-27T15:06:00.963 回答
1

不要在您的代码中执行此操作,只需使用MySQL Proxy之类的东西为您执行此操作。

于 2013-09-27T14:57:58.347 回答
0

当 php 连接失败时,它会生成一个警告,从而停止 php 的执行。您可以使用@mysql_connect(以“@”为前缀的函数名)来避免警告。并且您的代码将继续执行,即使第一个 sql server 没有响应。蹩脚,但工作。

于 2013-09-27T15:25:13.463 回答