我想CHECK TABLE
从 MySQL 命令行在我的所有表上运行。
我可以为单个表执行此操作:
mysql> check table Restaurant;
+--------------------+-------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+--------------------+-------+----------+----------+
| foodbox.Restaurant | check | status | OK |
+--------------------+-------+----------+----------+
1 row in set (0.02 sec)
Run Code Online (Sandbox Code Playgroud)
是否有等效的命令可以检查当前数据库中的所有表?
您可以使用 shell 脚本简化您的生活。这是我为 Linux 创建的一个,它基于mysqlcheck应用程序
此脚本将检查除 mysql 和 information_schema 之外的所有数据库中的所有表
vi check_all_databases.sh
#!/bin/bash
USER=root
Port=3306
PASSWD=password
DBS="$(/usr/bin/mysql --connect_timeout 10 -u $USER -P $Port -p$PASSWD -Bse 'SHOW DATABASES')"
for db in $DBS
do
if [ "$db" != "mysql" ] && [ "$db" != "information_schema" ];
then
/usr/bin/mysqlcheck -u $USER -p$PASSWD -c $db
fi
done
Run Code Online (Sandbox Code Playgroud)
保存文件
\wq
Run Code Online (Sandbox Code Playgroud)
然后执行它
sh check_all_databases.sh
dbt2.customer OK
dbt2.district OK
dbt2.history OK
dbt2.item OK
dbt2.new_order OK
dbt2.order_line OK
dbt2.orders OK
Run Code Online (Sandbox Code Playgroud)
对于 Windows,您将使用批处理脚本或 vbs 来做同样的事情。
另一种选择是为您有兴趣检查的一个数据库运行 mysqlcheck 应用程序。
/path/to/mysqlcheck -u 用户名 -pPASSWORD -c 数据库名称
mysqlcheck 将位于您安装 mysql 二进制文件的目录中。
在 Linux 中,您可以使用 which 命令来定位它
which mysqlcheck
Run Code Online (Sandbox Code Playgroud)