【问题标题】:How to repair a MySQL table without using phpMyAdmin?如何在不使用 phpMyAdmin 的情况下修复 MySQL 表?
【发布时间】:2010-02-19 13:10:04
【问题描述】:

我有一个包含复杂列的表,我开始用大量数据填充它,在此期间,它崩溃了。

表报告为崩溃,需要修复。

phpmyadmin 中的修复表无法修复。

然后我决定重新开始填充过程,但我什至无法检索表结构。

如何取回数据?还是只是结构?

(我在 amd quad 上的 xampp/windows 下运行 mysql)

【问题讨论】:

    标签: mysql crash xampp repair


    【解决方案1】:

    PHPMyadmin 在执行长查询时往往会出现问题。如果它无法使用特定的错误消息进行修复表,请发布它。如果它只是挂起,你应该尝试使用 mysql 的命令行版本进行修复,它位于你的 mysql 安装的 bin 目录中。

    mysql -u username -p
    mysql> use dbname;
    mysql> repair table tablename;
    

    根据表的大小,这可能需要一段时间。

    如果这不起作用,那么如果您的表使用 MyISAM 引擎,下一步就是使用 myisamchk。

    【讨论】:

      【解决方案2】:

      如果您的表在 myISAM 中,myisamchk 是第一个检查工具。它位于 mySQL 安装的 /bin 目录中。这是其repair options 的列表。

      在运行myisamchk 之前备份数据目录是明智的,以防万一。

      【讨论】:

        【解决方案3】:

        如果您的服务器正常工作,您也可以通过 1 或 2 个简单步骤来修复它。 转到 phpmyadmin 并检查该表被压碎,然后从下拉列表中选择修复表选项。

        这里是修复按钮的位置:

        【讨论】:

          【解决方案4】:

          你也可以像这样使用php脚本:

          <?php
              $host="localhost";
              $user="db_username";
              $password="db_password";
              $db="database_name";
              
              // connect to database
              $con = mysqli_connect($host,$user,$password);
              // select the correct database
              mysqli_select_db($con,$db);
              // get a list of the tables
              $alltables = mysqli_query($con,"SHOW TABLES;");
              
              // record the output
              $output = array();
              
              while($table = mysqli_fetch_assoc($alltables)){
               foreach($table as $db => $tablename){
                $sql = 'REPAIR TABLE '.$tablename.';';
                $response = mysqli_query($con,$sql) or die(mysqli_error($con));
                $output[] = mysqli_fetch_assoc($response);
               };
              };
              // print output
              print_r($output);
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2018-12-06
            • 2010-10-10
            • 2017-05-28
            • 1970-01-01
            • 1970-01-01
            • 2016-10-09
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多