MySQL错误1114:表已满

时间:2018-08-13 20:47:17

标签: mysql windows innodb

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

当表空间超过4G时遇到错误1114“表已满”。我尝试为“ file_per_table”设置创建同时具有0和1的数据库。

这个线程How many rows can mysql store?建议我一直保持良好状态,直到2T。

可以将表转换为MyISAM,但是希望保留Innodb随附的日志记录和恢复。

在Win 7 Pro x64上运行的x64 MySQL(也用于NTFS)。

在创建表中

MAX_ROWS = 10000000000。我意识到这是仅MyISAM的参数,对于InnoDb应该被忽略。其他地方是否有特定于Innodb的设置?还是这是一个错误?

1 个答案:

答案 0 :(得分:0)

编辑:请勿使用32位操作系统或32位MySQL。仅使用64位。


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

  

如果您需要大于4GB的表,请在NTFS或更高版本的文件系统上安装MySQL。

您的表最大容量为4GB,这可能是一个巧合,这就是FAT32文件系统的最大文件大小。

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

SELECT @@datadir, @@innodb_data_file_path;

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

如果innodb_data_file_path仅命名数据文件,则它将相对于datadir。但是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

此外,单个表可以命名数据目录之外的位置,但是如果您这样做,您可能会知道,因为创建表时它需要显式选项。

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

有关更多信息,请参见https://dev.mysql.com/doc/refman/5.7/en/tablespace-placing.html