我在hostgator托管,大约有30个mysql数据库(位于同一服务器上的所有不同网站).在过去的一年中..没问题,在最近的两天里,我突然发现其中有5-10个数据库被标记为“崩溃”,并且它们均未返回任何结果…所以我的网站没有显示任何信息.我必须运行“修复表mytable”来修复这些问题,然后它们才能再次正常工作.
不用每天早上登录数据库1到1,而是可以设置一个php页面以连接所有30个数据库并运行简单的select语句,如果可以,返回
“数据库db1正在工作”
“数据库db2正在工作”
然后在不工作时返回
“没有db3的回复”
….或类似的东西?
谢谢!
解决方法:
没有理由没有一个列出所有数据库名称和登录凭证并尝试依次连接到每个数据库的脚本:
$logins = array(
array('dbname' => 'blah', 'user' => 'username1', 'password' => 'password1'),
array('dbname' => 'yuck', ....)
...
);
$failures = array();
foreach ($logins as $login) {
$con = mysql_connect('servername', $login['user'], $login['password']);
if (!$con) {
$failures[] = $login['dbname'] . " failed with " . mysql_error();
continue;
}
$result = mysql_select_db($login['dbname']);
if (!$result) {
$failures[] = "Failed to select " . $login['dbname'] . ": " . mysql_error();
continue;
}
$result = mysql_query("SELECT something FROM sometable");
if (!$result) {
$failures[] = "Faile to select from " . $login['dbname'] . ": " . mysql_error();
continue;
}
if (mysql_num_rows($result) != $some_expected_value) {
$failures[] = "Got incorrect rowcount " . mysql_num_rows($result) . " on " . $login['dbname'];
}
etc....
mysql_close();
}
if (count($failures) > 0) {
echo "Failures found: "
print_r($failures);
}
标签:connect,mysql
来源: https://codeday.me/bug/20191102/1988682.html