Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL,错误126:表的密钥文件不正确_Mysql_Sql_Mysql Error 126 - Fatal编程技术网

MySQL,错误126:表的密钥文件不正确

MySQL,错误126:表的密钥文件不正确,mysql,sql,mysql-error-126,Mysql,Sql,Mysql Error 126,我读了以下有关联的问题,但这些回答并没有让我满意: 问题 运行查询时,我会遇到此错误 错误126(HY000):表的密钥文件不正确` 问题 当我试图找到问题时,我找不到问题,因此我不知道如何使用修复命令修复它。 如果我已经尝试过其他方法,是否有任何方法可以帮助我找到导致此问题的问题 询问 mysqlcheck 数行 更新 磁盘使用 您的查询似乎返回了一个大的中间结果集,需要 创建一个临时表,并指定mysql临时表的配置位置 磁盘表(/tmp)对于生成的临时表来说不够大 您可以尝试通过重新

我读了以下有关联的问题,但这些回答并没有让我满意:


问题 运行查询时,我会遇到此错误

错误126(HY000):表的密钥文件不正确`

问题 当我试图找到问题时,我找不到问题,因此我不知道如何使用修复命令修复它。 如果我已经尝试过其他方法,是否有任何方法可以帮助我找到导致此问题的问题


询问 mysqlcheck 数行
更新
磁盘使用
您的查询似乎返回了一个大的中间结果集,需要 创建一个临时表,并指定mysql临时表的配置位置 磁盘表(/tmp)对于生成的临时表来说不够大

您可以尝试通过重新安装tmpfs分区来增加其大小:

mount -t tmpfs -o remount,size=1G tmpfs /tmp
您可以通过编辑/etc/fstab使此更改永久化

如果无法执行此操作,可以尝试更改磁盘的位置 通过编辑my.cnf文件中的“tmpdir”条目(或添加 如果它不在那里,它就会被删除)。记住,你的目录 choose应该是mysql用户可写的

您还可以尝试通过增加 mysql配置选项的值:

tmp_table_size
max_heap_table_size
到更大的值。您需要增加上述两个参数

例如:

set global tmp_table_size = 1G;
set global max_heap_table_size = 1G;

您只需要修复在搜索查询中使用的表。这个问题通常发生在搜索查询中


转到“表名”“->操作->修复(只需单击一次)应用效果可能需要一些时间

将复杂查询拆分为多个查询会更快,而无需增加临时表大小

在我的情况下,我刚刚从临时位置清除了临时文件:

my.ini

tmpdir=“D:/xampp/tmp”


这对我很有效。

如果您在linux文件系统上的
/tmp
挂载是以溢出方式挂载的,通常大小为1MB,即

$df-h
已使用的文件系统大小可用已安装的文件系统%
udev 7.9G 12K 7.9G 1%/开发
tmpfs 1.6G 348K 1.6G 1%/次
/dev/xvda1 493G 6.9G 466G 2%/
无4.0K0 4.0K0%/sys/fs/cgroup
无5.0M 0.0M 0%/运行/锁定
无7.9G 0 7.9G 0%/运行/shm
无100M 0 100M 0%/运行/用户

溢出1.0M 4.0K 1020K 1%/tmp磁盘空间问题如何?500GB硬盘空间,数据库中没有BLOB,我看不出这是怎么回事。目前,它实际上并不是一个很大的av数据库。该项目正在测试中,因此我们比目前需要的资源多得多。尽管如此,我将仔细查看并使用information@Sebas虽然我对当前磁盘大小的看法是错误的,但我相信我们仍然应该有一个确定的裕度。还应该提到的是,本例中的查询应该以不同的方式格式化,以避免此问题。在这种情况下,使用多个查询要快得多。这为我指明了正确的方向。在我的例子中,我最近在根分区上用完了空间,它生成了一个溢出挂载来保护
/tmp
。当我用完房间时,我调整了音量。几个月后,我遇到了这个错误,这是因为我没有删除的溢出装载太小。谢谢你!他没有提到在mysql中使用任何gui,您显然描述了在某些gui上执行的步骤(因为您说“只需单击一下”)。
root@scraper:/tmp# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       20G  4.7G   15G  26% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
udev            237M  4.0K  237M   1% /dev
tmpfs            49M  188K   49M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            245M     0  245M   0% /run/shm
none            100M     0  100M   0% /run/user
mount -t tmpfs -o remount,size=1G tmpfs /tmp
tmp_table_size
max_heap_table_size
set global tmp_table_size = 1G;
set global max_heap_table_size = 1G;
sudo umount -l /tmp