我是MySQL数据库的新手。我一再看到MySQL的一个错误,说该表被标记为崩溃,应该修复。但是,我可以使用命令myisamchk修复崩溃的表。顺便说一句,我在MySQL中使用MYISAM数据库引擎。
我只是想知道在什么情况下数据库表崩溃以及如何防止它再次发生?
我使用mysqltcl库(3.0)从Tcl(8.5)脚本连接MySQL(5.0)数据库。
答案 0 :(得分:10)
MyISAM表非常容易崩溃。每个表中都有标题信息,用于跟踪MyISAM表具有的打开文件句柄数。
如果mysqld崩溃,任何打开文件句柄的MyISAM表都没有机会在每个文件句柄关闭时减少文件句柄数。因此,如果新文件句柄打开MyISAM表(.MYD文件)并且mysqld发现MyISAM表认为打开的文件句柄数与MyISAM表实际打开的文件句柄数之间不匹配,则表为宣布坠毁。
有四(4)种处理方法:
请参阅我的帖子https://dba.stackexchange.com/a/15079/877,了解如何在MySQL重启(2012年3月15日)时进行设置
InnoDB在存储引擎的初始化中内置了崩溃恢复功能。 MyISAM没有
如果mysqld故意或不自觉地崩溃,所有打开的MyISAM表的标题信息将使它们进入崩溃状态。避免手动杀死mysqld。