Php MySQL说:#1194-表';表名';标记为已崩溃,应进行维修

Php MySQL说:#1194-表';表名';标记为已崩溃,应进行维修,php,mysql,sql,phpmyadmin,Php,Mysql,Sql,Phpmyadmin,如果表崩溃,这意味着我的系统有问题 MySQL said: #1194 - Table 'tablename' is marked as crashed and should be repaired 我的网站目前因此关闭 我知道如何从phpmyadmin处修理桌子,但这是安全的修理方法吗 这个问题的重要因素是什么 问题。一般来说,为什么表会崩溃 答案。这些可能是以下原因: 服务器的磁盘空间已满。(请检查live server中的磁盘空间) 不正确地关闭MySQL服务器/在使用数据库时不正

如果表崩溃,这意味着我的系统有问题

MySQL said: 

#1194 - Table 'tablename' is marked as crashed and should be repaired 
我的网站目前因此关闭

我知道如何从phpmyadmin处修理桌子,但这是安全的修理方法吗

这个问题的重要因素是什么

问题。一般来说,为什么表会崩溃

答案。这些可能是以下原因:

  • 服务器的磁盘空间已满。(请检查live server中的磁盘空间)

  • 不正确地关闭MySQL服务器/在使用数据库时不正确地关闭表

  • 更多服务器负载


  • 是的,您可以从phpmyadmin修复表,它不会影响您的数据,您也可以使用“myisamchk”命令从shell修复表。

    首先,导致表崩溃的原因有很多

    • 硬盘故障
    • 服务器突然重启
    • 服务器崩溃
    • 固件问题(raid控制器或bios)
    • 布线中的缺陷
    • 等等
    使用phpmyadmin进行的修复基本上与mysqlrepair命令行相同。我建议在命令行上修复所有内容:

    mysqlrepair -A --auto-repair
    mysqlrepair -A -o
    
    mysqlcheck -u root -p --auto-repair --check --optimize --all-databases
    
    或开始测试:

    mysqlrepair -A -c
    

    我从命令行使用它:

    mysqlrepair -A --auto-repair
    mysqlrepair -A -o
    
    mysqlcheck -u root -p --auto-repair --check --optimize --all-databases
    
    使用:


    输入用户root的MySQL密码,一切都会完成。

    如果您没有所需的命令行工具,并且崩溃的原因很可能是MySQL本身,请从MySQL运行此命令以修复表:

    REPAIR TABLE db_name.table_name;
    

    如果您具有服务器的ssh访问权限,则可以登录并执行:

    df -h
    
    你可以看到这样的东西:

    Filesystem            Size  Used Avail Use% Mounted on
    /dev/cciss/xxxx      19G  825M   18G   5% /
    /dev/cciss/xxxx     9.4G  4.8G  4.2G  54% /usr
    /dev/cciss/xxxx      15G  1.8G   12G  13% /var
    /dev/cciss/xxxx      19G   18G    0G   0% /opt
    /dev/cciss/xxxx     4.7G  243M  4.3G   6% /tmp
    /dev/cciss/xxxx     9.4G  1.5G  7.5G  17% /home
    
    它安装在
    /opt
    上,在获得一些可用磁盘空间后,您可以运行查询(如上所述):

    最后一行是:

    Table               OP        Msg_type  Msg_text
    ...
    db.mytablecrashed   repair    status    OK
    

    解决方案:

    只需转到数据库并选择有问题的表,然后选择“修复表”选项,它将修复表中的崩溃条目并解决您的问题


    您可以发布查询吗?这可能会有帮助,“一般来说,为什么表会崩溃?”因为它是MyISAM。。。它以不安全著称。你目前的系统正常运行时间是多少?可能是系统关闭不当。检查日志,/var/log/messages和mysqld.log,这可能是OOM killer或mysqld进程失败。如果磁盘空间已满,会发生什么情况?它给出:“错误:mysqlcheck不支持多个相互矛盾的命令。”对,我也收到了相同的错误。删除--优化,然后它就会工作。它说没有安装mysqlrepair。这与运行mysqlcheck-uUSER-pPASSWORD-repair-extended-A相同吗