Bri*_*ian 105 mysql mysql-error-126
我从MySQL查询中得到以下错误.
#126 - Incorrect key file for table
我甚至没有宣布这张桌子的钥匙,但我确实有索引.有谁知道可能是什么问题?
Mon*_*s X 158
每次发生这种情况,根据我的经验,这是一个完整的磁盘.
编辑
还值得注意的是,如果您配置了ramdisk,那么在执行诸如更改大型表之类的操作时,这可能是由完整的ramdisk引起的.如果无法增加它的大小,您可以暂时注释掉ramdisk行以允许此类操作.
sno*_*e92 34
首先,您应该知道密钥和索引是MySQL中的同义词.如果查看有关CREATE TABLE语法的文档,可以阅读:
KEY通常是...的同义词INDEX.键属性PRIMARY KEY也可以KEY在列定义中指定时指定.这是为了与其他数据库系统兼容而实现的.
现在,您遇到的错误可能是由两件事造成的:
在第一种情况下,您将看到为查询添加限制可能会暂时解决问题.如果这样做适合您,您可能有一个tmp文件夹太小,无法满足您尝试执行的查询的大小.然后你可以决定或者tmp做大,或者让你的查询更小!;)
有时,tmp足够大但仍然满满,在这些情况下你需要做一些手动清理.
在第二种情况下,MySQL的数据存在实际问题.如果您可以轻松地重新插入数据,我建议只需删除/重新创建表,然后重新插入数据.如果你不能,你可以尝试使用REPAIR表修复表.这是一个通常很长的过程,很可能会失败.
查看您获得的完整错误消息:
表'FILEPATH.MYI'的密钥文件不正确; 尝试修复它
它在消息中提到您可以尝试修复它.另外,如果你看一下你得到的实际FILEPATH,你可以找到更多:
如果是这样的话/tmp/#sql_ab34_23f就意味着MySQL需要根据查询大小创建临时表.它将它存储在/ tmp中,并且/ tmp中没有足够的空间用于该临时表.
如果它包含实际表的名称,则表示该表很可能已损坏,您应该修复它.
如果您发现问题的大小为/ tmp,请阅读此答案以解决类似问题:MySQL,错误126:表的密钥文件不正确.
use*_*049 16
按照这些说明允许我重新创建我的tmp目录并修复问题:
以人类可读的形式显示所有文件系统及其磁盘使用情况:
df -h
Run Code Online (Sandbox Code Playgroud)
找到打开文件的进程 /tmp
sudo lsof /tmp/**/*
Run Code Online (Sandbox Code Playgroud)
然后卸下/tmp并/var/tmp:
umount -l /tmp
umount -l /var/tmp
Run Code Online (Sandbox Code Playgroud)
然后删除损坏的分区文件:
rm -fv /usr/tmpDSK
Run Code Online (Sandbox Code Playgroud)
然后创建一个漂亮的新的:
/scripts/securetmp
Run Code Online (Sandbox Code Playgroud)
请注意,通过编辑securetmp Perl脚本,您可以自己手动设置tmp目录的大小,但只是运行脚本会将服务器上tmp目录的大小从大约450MB增加到4.0GB.
当您有一个损坏的表时,通常会出现错误#126.解决此问题的最佳方法是执行修复.本文可能有所帮助:
http://dev.mysql.com/doc/refman/5.0/en/repair-table.html
| 归档时间: |
|
| 查看次数: |
121922 次 |
| 最近记录: |