我有两个进程使用嵌入式mysql访问同一个数据库,经常发生表损坏的情况,使用check table命令能看到conrrupt,为什么会产生表损坏的情况?怎样避免发生这种情况?硬盘剩余空间足够。

解决方案 »

  1.   

    网上有人说可以增加临时表的大小来避免这个问题,怎样增加临时表的大小?
    我的ini文件如下:
    [EmbedMySql]
    datadir = ./sqldb
    language = ./sqldb
    skip-innodb
    port=3306[libmysqld_client]
    language = ./sqldb
    port=3306
      

  2.   

    MyISAM损坏的可能原因:mysqld进程在写中间被杀掉。
    发生未预期的计算机关闭(例如,计算机被关闭)。 
    硬件故障。
    同时在正被服务器修改的表上使用外部程序(如myisamchk)。 你可以参考一下MySQL的官方手册。
    http://dev.mysql.com/doc/refman/5.1/zh/storage-engines.html#myisam-table-problems
    15.1.4. MyISAM表方面的问题
    15.1.4.1. 损坏的MyISAM表
    15.1.4.2. 未被适当关闭的表的问题
      

  3.   

    我同时只有两个进程在读写这张表,而且在读写之前都加上了进程锁,这样还会损坏表,就太让我失望了,难道mysql的稳定性这么差吗?
      

  4.   

    'quote.t_symbol', 'check', 'warning', 'Size of datafile is: 235516       Should be: 203096'
    'quote.t_symbol', 'check', 'warning', 'Found 39280 deleted space.   Should be 0'
    'quote.t_symbol', 'check', 'warning', 'Found 68 deleted blocks       Should be: 0'
    'quote.t_symbol', 'check', 'warning', 'Found 4733 key parts. Should be: 5008'
    'quote.t_symbol', 'check', 'status', 'OK'这是check出来的结果