坚持自己的梦想,给自己一个承诺,给梦想一个实践的机会

mysql 数据库修复办法

[ 2010/07/16 21:31 | by admin ]
今天碰到个朋友,说数据库坏了,让我帮修复一下。

出错提示是:
引用
MySQL Error
Message: MySQL Query Error
SQL: SELECT * FROM uchome_creditlog WHERE uid='1' AND rid='10'
Error: Table '.\a1226230711\uchome_creditlog' is marked as crashed and should be repaired
Errno.: 145
Click here to seek help.


这个跟我之前处理过的有点区别,之前提示的是.frm文件错误无法打开,现在没那个提示了,用repair talbe还能有效么?

我知道他在bbs后台mysql运行框里面输入 repair talbe uchome_creditlog ,无法修复,看来问题大了。

于是我要了他的vps帐号密码,远程登陆,并用ftp传了个phpmyadmin上去。进入phpmyadmin,repair,不行。停止mysql服务,再启动mysql服务,还是不行。我都想重启vps了。baidu,找到解决办法,用myisamchk。

命令如下: myisamchk -c -r  uchome_creditlog (如果还不行,就-f 强制修复)

命令执行完毕,刷新phpmyadmin,显示数据表正常。重新打开网站测试,正常。

到此修复完毕

后记:
引用
这是我遇到的第二个使用vps出现mysql表损坏的情况了。看来vps对mysql很不友好啊。用vps使用mysql的朋友要注意了

1.用一句sql从一个表里面取出数据导入另外一个表里面。这个对不同程序之间的数据转换很有用处,而且速度快,数据完整:

insert into table1 (column1,column2,...) select (column1,column2,...) from table2

(其中table1的各个字段要跟table2的相对应,主要是数据类型,而且字段的个数必须想等)



2.用一句sql从一个表里面取出数据来更新另外一个表里面对应的值:

update table1,table2 set table1.column1=table2.column1 where table1.column2=table2.column2

跟上一个一样,得对应。同时可以扩展至多个表之间对应的值的更新。



3.比较两个表里面某对应字段的值:

select * from table1 where ID not in(select ID from table2)
Tags: , ,
分页: 1/1 第一页 1 最后页 [ 显示模式: 摘要 | 列表 ]