今早登录某论坛,发现报错如下:
--------------------------
Update Error: UPDATE pw_ipstates SET nums=nums+1 WHERE day='2007-6-1'
The URL Is:
http://teaconner.com/bbs/index.php?
MySQL Server Error:
Table 'pw_ipstates' is read on
----------------
Update Error: UPDATE pw_threads SET hits=hits+1 WHERE tid='1'
The URL Is:
http://teaconner.com/bbs/read.php?tid=1
MySQL Server Error:
Got error 30 from storage engine ( 1030 )
------------------------
查找解决办法,找到一些有用的资料,供admin参考
常用命令:
SHOW TABLE STATUS LIKE '表名',check table ,REPAIR TABLE
有关资料:
---1---
有办法可以查询具体的 error 含义:
Error: 1030 - Got error 1 from storage engine
你可以使用 mysql自带的 perror 工具程序对 此故障代码进行解析。
这是我用这个工具查询 error 代码 1 的结果:
QUOTE:
D:Program Filesrorts>perror 1
OS error co
希望这个能对mysql 的用户有帮助,官方原帖:
http://forums.mysql.com/read.php?21,77055,77601#msg-77601
---2---
星期五下班时候都还是好好的,今天突然在点进文章内容时候出现下面问题,请高手指点!!
数据很重要.....非常非常感谢了!!!!!
数据库连接出错:UPDATE p8_article SET hits=hits+1 WHERE aid='232'
Table 'p8_article' is read on
1036
数据库连接出错:UPDATE p8_photo_pic SET hits=hits+1 WHERE id=562
Table 'p8_photo_pic' is read on
1036
zhangbl 2007-04-02 03:51
全部都显示只读,后台也能进去,但无法修改任何信息,我的数据库连接到底出了什么问题,谁能帮帮我!!谢谢啦!!!
网络肥狐 2007-04-02 07:21
进入备份数据库
点'p8_article' 和'p8_photo_pic' 右边的修复试试
zhangbl 2007-04-02 09:15
Quote:
引用第2楼网络肥狐于2007-04-02 07:21发表的 :
进入备份数据库
点'p8_article' 和'p8_photo_pic' 右边的修复试试
谢谢! 用您的办法已经恢复正常了!十分感谢!! 请问一下是不是数据库表受损了? 这样的问题会经常出现吗?我是菜鸟,感谢您!
xipan 2007-04-02 09:20
我的一出过,数据库损坏 多半是读取存储时发生了故障
----------
----3------------
以下摘自:http://www.phpwind.net/read-htm-tid-210605-keyword-1030.html
Got error 134 from storage engine ( 1030 )救急!
Query Error: SELECT * FROM bbs_threads WHERE fid='71' AND ifcheck='1' ORDER BY topped DESC, lastpost DESC LIMIT 0,40
MySQL Server Error:
Got error 134 from storage engine ( 1030 )
这个到底是什么问题呀?
数据表损坏了,需要修复三个表
threads
posts
tmsgs
修复使用myisamchk -r命令
我在windows下修复不成功,将数据表拷到bsd 下,再修复,成功。
其中tmsgs表用myisamchk 修复失败后,使用root权限进入mysql尝试repair tables tmsgs;后,再使用myisamchk -r修复成功。
详情请看http://blog.fedora.net.cn
--------------4-----------------------
以下摘自:http://blog.fedora.net.cn
修复MYSQL可能会使用到的实用程序列表:
myisamchk
描述、检查、优化和修复MySQL表的使用程序。因为myisamchk有许多功能,它在其自己的章节中描述。见13 维护MySQL安装。
make_binary_release 制作一个编译MySQL的一个二进制的版本。这能用FTP传送到在ftp.tcx.se网站的“/pub/mysql/Incoming”以方便其它MySQL用户。
msql2mysql
一个外壳脚本,转换mSQL程序到MySQL。它不能处理所有的情况,但是当转换时,它给出一个好起点。
mysql
mysql是一个简单的SQL外壳(具有GNU readline 能力),它支持交互式和非交互式使用。当交互地使用时,查询结果以ASCII表的格式被表示。当非交互地使用时(例如,作为一个过滤器),结果是以定位符分隔的格式表示。(输出格式可以使用命令行选项改变)你可以简单地象这样运行脚本:
shell> mysql database < script.sql > output.tab
如果你在客户中由于内存不足造成问题,使用--quick选项!这迫使mysql使用mysql_use_result()而非mysql_store_result()来检索结果集合。
mysqlaccess
一个脚本,检查对主机、用户和数据库组合的存取权限。
mysqladmin
执行管理操作的实用程序,例如创建或抛弃数据库,再装载授权表,清洗表到磁盘中和再打开日志文件。mysqladmin也可以被用来从服务器检索版本,进程和状态信息。见12.2 管理一个 MySQL 服务器。
mysqlbug
MySQL错误报告脚本。当填写一份错误报告到MySQL邮件列表时,应该总是使用该脚本。
mysqld
SQL守护进程。它应该一直在运行。
mysqldump
以SQL语句或定位符分隔的文本文件将一个MySQL数据库倾倒一个文件中。这是最早由Igor Romanenko编写的自由软件的增强版本。见12.3 从MySQL数据库和表倾倒结构和数据。
mysqlimp
使用LOAD DA
mysqlshow 显示数据库,表,列和索引的信息。
mysql_install_db 以缺省权限创建MySQL授权表。这通常仅被执行一次。就是在系统上第一次安装MySQL时。
replace 一个实用程序,由msql2mysql使用,但是有更一般的适用性。replace改变文件中或标准输入上的字符串。使用一台有限状态机首先匹配更长的字符串,能被用来交换字符串。例如,这个命令在给定的文件中交换a和b:
shell> replace a b b a -- file1 file2 ...
safe_mysqld 一个脚本,用某些更安全的特征启动mysqld守护进程,例如当一个错误发生时,重启服务器并且记载运行时刻信息到一个日志文件中。
--------------------------------------------------------------------------------
注意:在修复表之前要拷贝他们,注意备份,切记!
1.标准的表修复
a.试着用 --recover选项修复表,可以加上 --quick选项试图只根据索引的内容进行修复,这样做不触及数据文件。
% myisamchk --recover --quick table_name
or
% myk --recover --quick table_name
b.如果问题还存在,在试一下上一步命令,但是要忽略 --quick选项,这样允许修改数据文件。
% myisamchk --recover table_name
or
% myimchk --recover table_name
c.如果还不工作,试一下 --safe-recover 修复方法。但这种方法比普通方法要慢,但能修复 --recover不能修复的问题。
% myisamchk --safe-recover table_name
or
% myisamchk --safe-recover table_name
如果在myisamchk or isamchk 由于一个"can't create new temp file:file_name"的错误消息在任何一步停止,应该重复该命令并
加入 --force选项强迫清除临时文件。
2.如果标准修复失败这样做
a.定位到包含崩溃表的数据库目录中。
b.将该表的数据文件移到安全的地方。
c.调用mysql并通过执行下列语句重新创建新的空表,该语句使用表的描述文件
tbl_name.frm重新开始生成新的数据和索引文件。
mysql>delete from tbl_name;
d.退出mysql,将原始的数据文件移回到数据目录中,替换刚建的新的空文件。
e.在世这样用标准修复方法。
为了修复表的描述文件,可先从备份文件中恢复,然后再用标准修复方法。
如果由于某些原因没有备份,如果知道create table 语句,仍然可以恢复该文件:
a.定位到包含崩溃表的数据库目录中。
b.将该表的数据文件移到安全的地方。如果想使用用索引的话,还需要把索引文件移走。
c.调用mysql 发布create table 语句重建表。
d.退出mysql,将原始的数据文件移回到数据目录中,替换刚才新建的数据文件。如果在第2不中移动了索引文件,则也要讲起移回到数据库目录中。
e.在尝试标准表修复方法。
----5------------
以下摘自:http://blog.fedora.net.cn
phpwind论坛修复 [ 2006/12/20 03:49 | by banbool ]
论坛版本:phpwind v5.0.1(php+mysql)
操作系统:window 2K
故障现象:Update Error: INSERT INTO pw_threads (fid,icon,author,authorid,subject,ifcheck,type,postdate,lastpost,lastposter,hits,replies,topped,digest,pollid,activeid,ifupload,ifreward,rewardinfo,ifsale,anonymous) VALUES ('2','0','xxxx','1','娴嬭瘯宸ュ伐宸ュ伐宸?,'1','0','1166554469','1166554469','haosf','1','0','0','0','0','0','0','','','','0')
The URL Is:
http://bbs.xxx.com/post.php?
MySQL Server Error:
Duplicate entry '10157' for key 1 ( 1062 )
You Can Get Help In:
http://www.phpwind.net
检查系统日志,发现有如下错误:Got error 126 when reading table './db/pw_threads
论坛前台显示正常,但发贴时,则会提示错误。
故障解决过程:使用myisamchk 尝试解决,在windows下提示对该表无权限,于是将数据库中的所有表,拷贝到一台freebsd环境的机器,创建一个数据库,将拷贝的所有数据表放到新创建的数据库下,再使用myisamchk -r修复
>myisamchk -r /db/pw_posts
>myisamchk -r /db/pw_threads
>myisamchk -r /db/pw_tmsgs
提示信息类似这样:
Fixed index 1
Fixed index 2
... ...
Fixed index N
就表示修复完成了。
我在修复pw_tmsgs表时,提示错误(打印到屏幕的信息中带ERROR字样),于是进入mysql命令行,使用repair tables尝试修复
mysql>use db;
mysql> repair tables pw_tmsgs;
没有提示错误,表示修复成功,退回到系统命令行,再尝试使用myisamchk -r 修复
>myisamch -r /db/pw_tmsgs
修复成功
将修复后的表,拷贝回原数据库文件夹。(需要暂停MYSQL服务)
论坛功能恢复正常。
因本人在网上找不到相关详细资料,所以写出来,希望对碰到这个问题的朋友有所帮助。