MySQL 错误 1114:table 已满

MySQL error 1114: The table is full

x86 MySQL Win 7 Pro x86 上的 5.7.23。 NTFS.

当 table space 超过 4G 时遇到错误 1114 "the table is full"。我已经尝试为 "file_per_table" 设置创建同时包含 0 和 1 的数据库。

这个帖子 建议我应该一直很好到 2T。

将 table 转换为 MyISAM 可行,但希望保留 Innodb 附带的日志记录和恢复。

x64 MySQL 在 Win 7 Pro x64(也是 NTFS)上工作。

MAX_ROWS=10000000000 在创建 TABLE 中。我意识到这是一个 MyISAM-only 参数,应该被 InnoDb 忽略。其他地方是否有特定于 Innodb 的设置?或者这是一个错误?

编辑:不要使用 32 位 OS 或 32 位 MySQL。仅使用 64 位。


https://dev.mysql.com/doc/mysql-installation-excerpt/5.7/en/windows-installation.html 说:

If you need tables with a size larger than 4GB, install MySQL on an NTFS or newer file system.

您的表最大为 4GB 可能太巧合了,这是 FAT32 文件系统的最大文件大小。

我建议您仔细检查存储数据的文件系统是否为 NTFS。请注意,它不一定是 C: 驱动器。 运行 MySQL 客户端中的此 SQL 查询:

SELECT @@datadir, @@innodb_data_file_path;

datadir 是大多数 MySQL 数据文件和日志文件的默认位置。

如果innodb_data_file_path只是命名数据文件,那么它将是相对于数据目录的。但是 innodb_data_file_path 也可以命名文件的完整路径名,并且可以位于不在数据目录下的另一个位置。

innodb_data_file_path 还可以选择为全局表空间设置最大大小,例如,如果值是这样的:

ibdata1:12M:autoextend:max:4GB

有关详细信息,请参阅 https://dev.mysql.com/doc/refman/5.7/en/innodb-init-startup-configuration.html

此外,单个表可以命名数据目录之外的位置,但如果您这样做了,您可能会知道它,因为它在您创建时需要一个明确的选项 TABLE.

CREATE TABLE `tablename` ( ... ) DATA DIRECTORY = '/alternative/directory';

有关详细信息,请参阅 https://dev.mysql.com/doc/refman/5.7/en/tablespace-placing.html