程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> Mysql中避免“表已滿錯誤”出現

Mysql中避免“表已滿錯誤”出現

編輯:關於MYSQL數據庫

表已滿錯誤出現的方式有數種:

·你正在使用低於3.23版的MySQL服務器,而且“內存中”臨時表超過了tmp_table_size字節。要想避免該問題,可使用“-O tmp_table_size=val”選項以便MySQLd增加臨時表的大小,或在發出有問題的查詢之前,使用SQL選項 SQL_BIG_TABLES。

也可以使用“--big-tables”選項啟動MySQLd。它與使用針對所有查詢的SQL_BIG_TABLES完全相同。

自MySQL 3.23起,該問題應不再出現。如果“內存中”臨時表超過tmp_table_size,服務器會自動將其轉換為基於磁盤的MyISAM表。

·你正在使用InnoDB表,並超出了InnoDB表空間。在該情況下,解決方法是增加InnoDB表空間。

·你正在僅支持2GB文件的操作系統上使用ISAM或MyISAM表,數據文件或索引文件達到了該限制值。

·你正在使用MyISAM表,而且表所需的空間超過內部指針允許的大小。如果在創建表時未指定MAX_ROWS表,MySQL將使用myisam_data_pointer_size系統變量。默認值為6字節,它足以容納65536TB數據。

使用該語句,可檢查最大數據/索引大小:

  1. SHOW TABLE STATUS FROM database LIKE 'tbl_name';
  2. 也可以使用myisamchk -dv /path/to/table-index-file。

如果指針大小過小,可使用ALTER TABLE更正該問題:

  1. ALTER TABLE tbl_name MAX_ROWS=1000000000 AVG_ROW_LENGTH=nnn;

僅應為具有BLOB或TEXT列的表指定AVG_ROW_LENGTH。在該情況下,MySQL不能僅根據行數優化所需的空間。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved