更新:tl;dr:问题是 MySQLTMPDIR
在创建索引时使用。而我TMPDIR
的磁盘空间不足。
原问题:
我正在尝试向 InnoDB 表添加索引,并获得table is full error
. 我有足够的磁盘空间,并且 MySQL 配置有一个 file-per-table=1。表数据为 85GB,我假设索引将在 20GB - 30GB 左右,而且我的磁盘空间比这多得多。我也在使用 ext3,所以从操作系统的角度来看,我认为文件大小限制没有任何问题。
记录的错误如下所示:
140616 13:04:33 InnoDB: Error: Write to file (merge) failed at offset 3 1940914176.
InnoDB: 1048576 bytes should have been written, only 970752 were written.
InnoDB: Operating system error number 0.
InnoDB: Check that your OS and file system support files of this size.
InnoDB: Check also that the disk is not full or a …
Run Code Online (Sandbox Code Playgroud) 我已经从备份中提取了 mysql 的数据目录,需要从旧表中获取模式,但它是来自另一台机器的备份。
我今天已经阅读了大量有关如何执行此操作的教程,但每次似乎都失败了,或者我最终不得不重新安装 mysql,因为 mysql 挂起或崩溃。我尝试了以下方法:
.frm
文件中恢复我尝试了各种顺序和组合。
是否有任何外部工具可以从.frm
文件中提取模式?如果我打开文件,我可以看到列名。我看了一眼,但似乎找不到任何能让我做到这一点的东西。
提前致谢。