gpt4 book ai didi

php - 如何在所有具有 `in use` 表的数据库中进行搜索

转载 作者:行者123 更新时间:2023-12-04 19:35:18 25 4
gpt4 key购买 nike

我的数据库服务器最近损坏了,服务器上有300多个数据库。
我目前正在做的方式是运行 phpmyadmin并一一检查所有数据库,看看是否有任何数据库至少有一个数据库 in usecollation恢复。
如何搜索collation在所有具有至少一个 in use 的数据库和表中在 collation ?
服务器是 CentOS 7,我有 root 访问权限。如果您可以帮助我使用 PHP,我可以在需要时运行 PHP 脚本。
更新 1
直到现在我发现我应该运行这些查询来使用数据库并显示表状态:

Use DatabaseName;
show TABLE STATUS;
它显示所有表状态,包括损坏的表:
| 2022-04-05 20:31:19 | utf8_persian_ci   |     NULL |                |                                                                  | 288230376151710720 | N         |
| users | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL| NULL | NULL | NULL | NULL | Table 'db_name.users' doesn't exist in engine | NULL | NULL |
我需要 grep或将其通过管道传输到另一个文件以检查并列出所有文件。

最佳答案

您可以修改此 shell 脚本以供您使用:
mysql -N 抑制 header
grep -v E "..|.."排除系统数据库

root@localhost:~# mysql -N -e "SHOW DATABASES" | grep -v -E "mysql|information_schema|performance_schema" |
> while read dbs
> do
> echo "CHECK DATABASE " $dbs
>. # your command
> done
输出:
CHECK DATABASE  bernd
CHECK DATABASE sys
有 2 个命令:
mysql -N -e "SHOW DATABASES" | grep -v -E "mysql|information_schema|performance_schema" |
while read dbs
do
echo "CHECK DATABASE " $dbs;
mysql -N -e "USE $dbs; SHOW TABLE STATUS;"
done

关于php - 如何在所有具有 `in use` 表的数据库中进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71985713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com