Mysql

MySQL 查詢 INSERT INTO … 失敗 - 表“x”已滿

  • February 26, 2016

如果我的問題不完整或愚蠢,我深表歉意,我對 SQL 的了解非常有限,但老闆希望我解決這個問題。

環境:Webmin/Virtualmin | CentOS 6.5 上的 MySQL 版本 5.1.73

基本上,我收到表“Email_Messages”已滿的錯誤。我將“Email_Messages”表與數據庫中的其他表進行比較,它的單元格計數約為 232K,但其他的單元格計數更高:一個有 334K。

我的磁碟上還有 8GB 的​​可用空間,Google搜尋告訴我,對於超出作業系統限制的表的大小確實沒有太多限制。看起來有問題的數據庫只有 203mb。

關於如何進一步解決此問題/增加最大表大小的任何想法?

非常感謝 - 讓我知道我可以提供哪些其他資訊。

我認為問題根本不是 InnoDB 表大小限制。

Table is Full在 InnoDB Plumbing 中有關於 InnoDB Tables 的文章

我的猜測是您的 InnoDB 日誌文件(ib_logfile0、ib_logfile1)可能太小了。(請參閱我在 CAVEAT #2 下的第二篇文章)

由於您使用的是 MySQL 5.1.73,您將不得不增加innodb_log_file_sizeinnodb_log_buffer_size做一些體力勞動。方法如下:

STEP 01 : 將這些行添加my.cnf到$$ mysqld $$組頭

[mysqld]
innodb_log_file_size=1G
innodb_log_buffer_size=64M

步驟 02:以 root@localhost 登錄並執行此命令

SET GLOBAL innodb_fast_shutdown = 0;

步驟 03:關閉 mysql

service mysql stop

步驟 04:重命名日誌文件

cd /var/lib/mysql
mv ib_logfile0 ib_logfile0.old
mv ib_logfile1 ib_logfile1.old

步驟 05:啟動 mysql

service mysql start

這將重新生成每個 1G 的新日誌文件。

拜託,試試看有沒有用!!!

幾個月前我的 MySQL 數據庫空間不足,儘管看起來有足夠的可用磁碟空間。這是由於 MySQL(在大多數 Linux 系統下)將數據庫安裝在 /root 中導致空間不足,而 /home 中有很多空間。將數據庫從 /root 移動到 /home 解決了這個問題。

引用自:https://dba.stackexchange.com/questions/97246