Mysql 一次性修复所有表

Mysql 一次性修复所有表,mysql,sql,Mysql,Sql,如何一次性检查数据库中的所有表 而不是键入查询检查表“tablename” 是否有任何简单的命令,如“全部检查”或类似的命令?没有默认命令来执行此操作,但您可以创建一个过程来执行此操作。 它将遍历信息_schema的行,并调用修复表“tablename”用于每行检查表还不支持准备好的语句。以下是示例(将MYDATABASE替换为您的数据库名称): 在命令行中,您可以使用: mysqlcheck -A --auto-repair 使用以下查询为数据库中的所有表打印修复SQL语句: select

如何一次性检查数据库中的所有表

而不是键入查询
检查表“tablename”


是否有任何简单的命令,如“全部检查”
或类似的命令?

没有默认命令来执行此操作,但您可以创建一个过程来执行此操作。 它将遍历
信息_schema
的行,并调用
修复表“tablename”用于每行<代码>检查表
还不支持准备好的语句。以下是示例(将MYDATABASE替换为您的数据库名称):


在命令行中,您可以使用:

mysqlcheck -A --auto-repair

使用以下查询为数据库中的所有表打印
修复
SQL语句:

select concat('REPAIR TABLE ', table_name, ';') from information_schema.tables 
where table_schema='mydatabase'; 
之后,复制所有查询并在
mydatabase
上执行它

注意:用所需的数据库名替换
mydatabase

命令如下:

mysqlcheck -u root -p --auto-repair --check --all-databases
您必须在被询问时提供密码

或者您可以运行此选项,但不建议使用此选项,因为密码是以明文形式编写的:

mysqlcheck -u root --password=THEPASSWORD --auto-repair --check --all-databases

我喜欢这个简单的shell检查:

mysql -p<password> -D<database> -B -e "SHOW TABLES LIKE 'User%'" \
| awk 'NR != 1 {print "CHECK TABLE "$1";"}' \
| mysql -p<password> -D<database>
mysql-p-D-B-e“显示像‘User%”这样的表”\
|awk'NR!=1{打印“检查表”$1;“}”\
|mysql-p-D

以下命令在Windows中使用命令提示符(作为管理员)对我有效:

mysqlcheck -u root -p -A --auto-repair

与root用户一起运行mysqlcheck,提示输入密码,检查所有数据库,并自动修复任何损坏的表。

无需键入密码,只需使用以下任一命令(不言自明):


对于plesk主机,其中一个应该这样做:(两者的作用相同)


您可能需要用户名和密码:

mysqlcheck -A --auto-repair -uroot -p
系统将提示您输入密码

mysqlcheck -A --auto-repair -uroot -p{{password here}}

如果您想输入cron,但您的密码将以纯文本显示

如果损坏的表在

mysqlcheck -A --auto-repair
试一试


mysqlcheck-u root-p--auto-repair--check--optimize--all-databases错误:mysqlcheck不支持多个相互矛盾的命令如果您得到了相互矛盾的命令错误,请去掉--optimize选项。我想您必须使用其中一个选项:auto-repair、check或optimize。我只使用了自动修复,workedI尝试了您所说的,但我得到:mysqlcheck:get error:1045:root用户@'localhost(使用密码:YES)在尝试连接时被拒绝访问,我知道我使用的是正确的密码。您可以使用
mysql-ss
将列名从输出中省略-这将允许删除
NR!=1
从您的代码中,-use frm做什么?--使用frm对MyISAM表进行修复操作,从数据字典中获取表结构,以便即使.MYI标头损坏,也可以修复该表。(参见)
mysqlcheck -A --auto-repair -uroot -p
mysqlcheck -A --auto-repair -uroot -p{{password here}}
mysqlcheck -A --auto-repair
mysqlcheck -A --auto-repair --use-frm