下沙论坛

 找回密码
 注册论坛(EC通行证)

QQ登录

QQ登录

下沙大学生网QQ群8(千人群)
群号:6490324 ,验证:下沙大学生网。
用手机发布本地信息严禁群发,各种宣传贴请发表在下沙信息版块有问必答,欢迎提问 提升会员等级,助你宣传
新会员必读 大学生的论坛下沙新生必读下沙币获得方法及使用
查看: 2984|回复: 6
打印 上一主题 下一主题

该死的数据整理功能。

[复制链接]
  • TA的每日心情
    奋斗
    半小时前
  • 签到天数: 2400 天

    [LV.Master]伴坛终老

    跳转到指定楼层
    1
    发表于 2007-12-22 13:07:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    差点害了我!
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏 分享分享 顶 踩
  • TA的每日心情
    奋斗
    2016-5-12 10:45
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    2
    发表于 2007-12-22 13:10:08 | 只看该作者
    整理啥啊,就这么点数据
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    半小时前
  • 签到天数: 2400 天

    [LV.Master]伴坛终老

    3
     楼主| 发表于 2007-12-22 13:11:01 | 只看该作者
    mysql5.0 Table ‘.\xoops\cms_session’ is marked as crashed and last (automatic?) repair failed11月 22, 2007 at 10:49 am 由 CFC4N · Filed under 心情日记 ! d8 p& H  \- f9 X6 F5 j

    $ F7 H" |8 _; X) b6 O+ e$ t今天到公司,***, 公司网站的cms_session表又坏了,保存不 了session了,登陆不了! 日志查看了一下,N多错误! 靠靠靠!
    ( o! M4 o  T' Z6 o. t: q: F% @) u* }. d; F& v; Z7 }
    ! a7 x8 R, p- y+ R7 Z
    查了N多资料, 发现这篇BLOG 写的蛮详细的,COPY过来!5 v* @3 n1 R6 l0 T4 r7 t
    7 d: I, E8 \. E0 I7 U( h. R0 K
    最后我解决的方法是
    " R0 ~" c4 {6 N) G  j
    $ t, @. t! b. [" A$ {! x& Rmyisamchk -f -o ../data/xoops/cms_session.MYI
    7 K2 j5 F9 G9 Y% x' ^以下是 网友的BLOG详细资料!
    ! q( p$ f, T0 o4 r- b* L& {- u' H* M) Z. n
    我的网站出问题了,访问一看,果然全屏报错,检查mysql日志,错误信息为:; S# B* Y. c) h: m

    1 e/ d& D$ f" `( k% }2 ITable '.\dedecmsv4\dede_archives' is marked as crashed and should be repaired9 z& u9 o% |8 M( a! k1 `7 m8 r
    提示说cms的文章表dede_archives被标记有问题,需要修复。于是赶快恢复历史数据,上网查找原因。最终将问题解决。解决方法如下:
    4 H2 H/ t6 C; A8 ~
    2 g! w5 f8 M/ I找到mysql的安装目录的bin/myisamchk工具,在命令行中输入:/ S) O  u; e  j; w# ^
    ' B& g/ u% B& Z' ]4 u
    myisamchk -c -r ../data/dedecmsv4/dede_archives.MYI
    0 u% q# f' a% A* L3 F- F然后myisamchk 工具会帮助你恢复数据表的索引。重新启动mysql,问题解决。# N6 y2 s1 b; a3 Q& o
    $ n" o: W. S$ \+ j$ F
    问题分析:
    ) O3 E; O  o$ z7 g- \+ \# y
    + Z8 b/ C! v1 ?" P: `. F, E1、错误产生原因,有网友说是频繁查询和更新dede_archives表造成的索引错误,因为我的页面没有静态生成,而是动态页面,因此比较同意这种说法。还有说法为是MYSQL数据库因为某种原因而受到了损坏,如:数据库服务器突发性的断电、在提在数据库表提供服务时对表的原文件进行某种操作都有可能导致MYSQL数据库表被损坏而无法读取数据。总之就是因为某些不可测的问题造成表的损坏。
    - j) C( D9 Q0 g# Y
    # {( l1 }$ `) v% N* y4 ]问题的编号为145
      o# c: ]% M0 T2 t- F9 b$ s2 O2 H* B; {  G
    2、问题解决办法。
    ( {/ K8 l& [/ x# P0 R& `
    * o) [/ u' `3 m 当你试图修复一个被破坏的表的问题时,有三种修复类型。如果你得到一个错误信息指出一个临时文件不能建立,删除信息所指出的文件并再试一次–这通常是上一次修复操作遗留下来的。& b5 x" ?0 |1 c0 c. G. L! _8 p
    这三种修复方法如下所示:2 c" O2 g; ^; M; W+ E

    3 h$ p( ~: w9 \: U4 j; Q% myisamchk --recover --quick /path/to/tblName
    * o: K# o; C4 n8 C8 ?' H% myisamchk --recover /path/to/tblName # r& O* w8 y* d9 ?8 x
    % myisamchk --safe-recover /path/to/tblName8 t3 N% ~3 O* d/ u' s

    6 F  w9 v& Z) k7 T# e- f* E第一种是最快的,用来修复最普通的问题;而最后一种是最慢的,用来修复一些其它方法所不能修复的问题。
    ( |7 p' H; c! ?# [  b/ p
    - Y6 a& V( r/ n6 `  f0 T' r: d检查和修复MySQL数据文件
    3 T7 i6 V+ v7 ]+ z! @4 ^如果上面的方法无法修复一个被损坏的表,在你放弃之前,你还可以试试下面这两个技巧:
    8 r% u# b6 G. F9 k% Q如果你怀疑表的索引文件(*.MYI)发生了不可修复的错误,甚至是丢失了这个文件,你可以使用数据文件(*.MYD)和数据格式文件(*.frm)重新生成它。首先制作一个数据文件(tblName.MYD)的拷贝。重启你的MySQL服务并连接到这个服务上,使用下面的命令删除表的内容:
    1 b. I' L# P3 ^& @8 E; Hmysql> DELETE FROM tblName;
    & l0 ?/ i% `  U9 D. q  P在删除表的内容的同时,会建立一个新的索引文件。退出登录并重新关闭服务,然后用你刚才保存的数据文件(tblName.MYD)覆盖新的(空)数据文件。最后,使用myisamchk执行标准的修复(上面的第二种方法),根据表的数据的内容和表的格式文件重新生成索引数据。1 f9 W" T0 U/ A# A+ L6 s! M

    : h! Q0 V/ A1 F6 e( a# A- U$ c如果你的表的格式文件(tblName.frm)丢失了或者是发生了不可修复的错误,但是你清楚如何使用相应的CREATE TABLE语句来重新生成这张表,你可以重新生成一个新的.frm文件并和你的数据文件和索引文件(如果索引文件有问题,使用上面的方法重建一个新的)一起使用。首先制作一个数据和索引文件的拷贝,然后删除原来的文件(删除数据目录下有关这个表的所有记录)。
    $ d6 T0 d# \) l8 n, e: n4 u
    ! K7 D1 ?8 d' ^2 ~! c; E% s启动MySQL服务并使用当初的CREATE TABLE文件建立一个新的表。新的.frm文件应该可以正常工作了,但是最好你还是执行一下标准的修复(上面的第二种方法)。
    3 |5 b2 M1 [- ^9 }3 Y" o8 K 3、myisamchk工具介绍(见mysql的官方手册)
    9 ?, T2 o. p" X( v0 Y; W* O" C! b0 K+ B4 [! T9 M; I
    可以使用myisamchk实用程序来获得有关数据库表的信息或检查、修复、优化他们。myisamchk适用MyISAM表(对应.MYI和.MYD文件的表)。
    2 j: Y( s% _( Y! f4 J6 X2 n# X) c) R4 n( t, L- d6 V! l
    调用myisamchk的方法:
    0 S, H! m7 k1 ~0 A, ~  O1 K9 r, a" Q8 Q' O" e  n
    shell> myisamchk [options] tbl_name …- _3 _, i& c& t  r9 f% ^
    options指定你想让myisamchk做什么。在后面描述它们。还可以通过调用myisamchk –help得到选项列表。
    # F" Z% O! \# ]8 N/ q# A" C9 t, c+ S4 b# M& s
    tbl_name是你想要检查或修复的数据库表。如果你不在数据库目录的某处运行myisamchk,你必须指定数据库目录的路径,因为myisamchk不知道你的数据库位于哪儿。实际上,myisamchk不在乎你正在操作的文件是否位于一个数据库目录;你可以将对应于数据库表的文件拷贝到别处并且在那里执行恢复操作。
    * N% Z5 T& e$ c+ {5 z# o8 ?
    / I& @0 C. [3 j' p* z4 W如果你愿意,可以用myisamchk命令行命名几个表。还可以通过命名索引文件(用“ .MYI”后缀)来指定一个表。它允许你通过使用模式“*.MYI”指定在一个目录所有的表。例如,如果你在数据库目录,可以这样在目录下检查所有的MyISAM表:- q; C4 C. w3 Q, S* j  v- P
    7 Z$ `, o9 G% @6 a. K0 @
    shell> myisamchk *.MYI4 C, I) S' u# ~9 [' E$ r/ {
    如果你不在数据库目录下,可通过指定到目录的路径检查所有在那里的表:# L  u6 D" g( I# J( W3 I8 t
    $ C% _9 |0 K3 k1 P) J7 @1 D
    shell> myisamchk /path/to/database_dir/*.MYI
    ! T6 J8 A! H4 V2 z/ c: [你甚至可以通过为MySQL数据目录的路径指定一个通配符来检查所有的数据库中的所有表:
    3 ^/ a1 a( n" Z; T4 @6 t$ {  g
    ! l, K/ x$ b- ~( @$ D& t6 Zshell> myisamchk /path/to/datadir/*/*.MYI8 f( N$ u3 A6 y+ K9 p1 M
    推荐的快速检查所有MyISAM表的方式是:
    $ b* k% r, _' I7 D
    / y! {, v  f# P( D  L) N* t( E9 Y* Tshell> myisamchk --silent --fast /path/to/datadir/*/*.MYI& W8 X2 R: E( `4 l' J- @2 U
    如果你想要检查所有MyISAM表并修复任何破坏的表,可以使用下面的命令:4 _+ F& R: u" G

    ) c& J$ w7 D& E+ z& e3 G7 Rshell> myisamchk --silent --force --fast --update-state \ 1 V$ s& c7 K" N. ]  n
              -O key_buffer=64M -O sort_buffer=64M \ . u/ V" U; \( m1 G$ j5 Q" _5 ^
              -O read_buffer=1M -O write_buffer=1M \ 4 P  D; }- f: c8 J4 h
              /path/to/datadir/*/*.MYI
    % k% A7 a' W, T" a; n- ?该命令假定你有大于64MB的自由内存。关于用myisamchk分配内存的详细信息,参见5.9.5.5节,“myisamchk内存使用”。8 O% m2 ]* h+ u# K5 i

      ~2 Z8 F: W) j2 \* M当你运行myisamchk时,必须确保其它程序不使用表。否则,当你运行myisamchk时,会显示下面的错误消息:) h7 W3 G9 J; k; K* ?$ \8 y
    " J$ O  x1 b9 Z" A7 T
    warning: clients are using or haven't closed the table properly, e4 O9 Y! `/ i
    这说明你正尝试检查正被另一个还没有关闭文件或已经终止而没有正确地关闭文件的程序(例如mysqld服务器)更新的表。
    8 G. Y3 m! ]4 `$ O+ i3 I6 Z/ V: g2 w" K+ H2 _$ u( ?; F' j" u
    如果mysqld正在运行,你必须通过FLUSH TABLES强制清空仍然在内存中的任何表修改。当你运行myisamchk时,必须确保其它程序不使用表。避免该问题的最容易的方法是使用CHECK TABLE而不用myisamchk来检查表。
    8 E2 U$ W* t9 `1 z3 y. o
    % B  x' K) g; s+ i4 g! d* J$ jPermalink
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    半小时前
  • 签到天数: 2400 天

    [LV.Master]伴坛终老

    4
     楼主| 发表于 2007-12-22 14:17:01 | 只看该作者
    以后还是用mysql自己的东西吧
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2022-2-14 00:00
  • 签到天数: 97 天

    [LV.6]常住居民II

    5
    发表于 2007-12-22 15:01:43 | 只看该作者
    不懂 ,发个帖玩游戏去
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    半小时前
  • 签到天数: 2400 天

    [LV.Master]伴坛终老

    6
     楼主| 发表于 2007-12-22 15:23:42 | 只看该作者
    一重启服务器,可能mysql数据库还没有准备好,狂慢
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7
    发表于 2007-12-22 16:30:23 | 只看该作者
    不懂
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    下沙大学生网推荐上一条 /1 下一条

    快速回复 返回顶部 返回列表