我有一个包含复杂列的表,我开始用大量数据填充它,在此期间,它崩溃了。
表报告为崩溃,需要修复。
phpmyadmin 中的修复表无法修复。
然后我决定再次开始填充过程,但我什至无法检索表结构。
如何取回数据?还是只是结构?
(我在 AMD Quad 上的 xampp/windows 下运行 mysql)
PHPMyadmin 在执行长查询时往往会出现问题。如果它无法使用特定的错误消息进行修复表,请发布它。如果它只是挂起,你应该尝试使用 mysql 的命令行版本进行修复,它位于你的 mysql 安装的 bin 目录中。
mysql -u username -p
mysql> use dbname;
mysql> repair table tablename;
根据桌子的大小,这可能需要一段时间。
如果这不起作用,那么如果您的表使用 MyISAM 引擎,您的下一步就是使用 myisamchk。
您也可以像这样使用 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);