我正在尝试使用简单查询向InnoDB表添加一行:
INSERT INTO zip_codes (zip_code, city) VALUES ('90210', 'Beverly Hills');
Run Code Online (Sandbox Code Playgroud)
但是当我尝试这个查询时,我得到以下内容:
SELECT COUNT(*) FROM zip_codes
Run Code Online (Sandbox Code Playgroud)
做一个"SELECT COUNT(*)FROM zip_codes"给了我188,959行,考虑到我在同一个数据库中有另一个810,635行的表,这似乎不太多.
我对InnoDB引擎缺乏经验,从未在MyISAM上遇到过这个问题.这里有哪些潜在的问题?
编辑:只有在zip_codes表中添加行时才会出现这种情况.
Mar*_* C. 86
编辑:首先检查,如果你没有用完磁盘空间,在解决配置相关的解决方案之前.
在这个例子中innodb_data_file_path,你的最大尺寸似乎太小了my.cnf
innodb_data_file_path = ibdata1:10M:autoextend:max:512M
Run Code Online (Sandbox Code Playgroud)
在所有innodb表中,你不能容纳超过512MB的数据.
也许你应该改用一个innodb-per-table方案innodb_file_per_table.
Sli*_*liq 22
Docker 用户:当您达到Docker 映像大小限制的90% 左右时也会发生这种情况(似乎缓存需要 10% 左右)。措辞令人困惑,因为这仅意味着 Docker 可以用于基本上所有内容的磁盘空间量。
要修复,请转到您的 Docker 桌面设置 > 磁盘 > 向右移动滑块 > 应用。
cle*_*orn 17
您需要修改my.cnf中为INNO_DB表设置的限制上限.没有为各个表设置此内存限制,它是为所有表组合设置的.
如果您希望内存自动扩展到512MB
innodb_data_file_path = ibdata1:10M:autoextend:max:512M
Run Code Online (Sandbox Code Playgroud)
如果您不知道限制或不想设置限额上限,可以像这样修改它
innodb_data_file_path = ibdata1:10M:autoextend
Run Code Online (Sandbox Code Playgroud)
小智 10
您可能在存储mysql表的分区(通常是/ var/lib/mysql)或存储临时表的位置(通常为/ tmp)中空间不足.
您可能希望: - 在索引创建期间监视您的可用空间. - 将tmpdir MySQL变量指向其他位置.这需要重新启动服务器.
导入8GB sql数据库文件时,我也遇到了这个错误.检查了我的mysql安装驱动器.驱动器中没有剩余空间.因此通过删除不需要的项目并重新运行我的数据库导入命令来获得一些空间.这一次成功了.
就我而言,这只是因为 mysql 服务器与应用程序一起运行,该应用程序写入了太多日志,导致磁盘已满。
您可以检查磁盘是否有足够的空间使用
df -h
Run Code Online (Sandbox Code Playgroud)
如果磁盘使用百分比为100%,可以使用此命令查找哪个目录太大
du -h -d 1 /
Run Code Online (Sandbox Code Playgroud)
除非您启用了innodb_file_per_table选项,否则InnoDB将所有数据保存在一个文件中,通常称为ibdata1.
检查该文件的大小,并检查它所在的驱动器中是否有足够的磁盘空间.
小智 6
我们有:SQLSTATE[HY000]:一般错误:1114 表“catalog_product_index_price_bundle_sel_tmp”已满
解决了:
编辑数据库配置:
纳米 /etc/my.cnf
tmp_table_size=256M max_heap_table_size=256M
| 归档时间: |
|
| 查看次数: |
186900 次 |
| 最近记录: |