如何修改MySQL行大小限制
當遇到錯誤「Row size Too Large (> 8126)」時,表示允許的最大行大小MyMySQL已經被超越了。若要解決此問題,可以實施某些表格設計注意事項和資料庫配置調整。
建議
Stack Exchange 上提出的建議解決方案涉及修改my.cnf 檔案中的設定:
- 啟用Barracuda檔案格式:
- 啟用Barracuda檔案格式:透過設定配置InnoDB使用Barracuda檔案格式innodb_file_format=梭子魚。這樣就無需內聯儲存一部分 BLOB 數據,從而減少了行大小。
使用 ROW_FORMAT=COMPRESSED:
將表格的行格式變更為 ROW_FORMAT=COMPRESSED。此格式透過套用壓縮來減少 BLOB 資料的大小。
ALTER TABLE table_name
ENGINE=InnoDB
ROW_FORMAT=COMPRESSED
KEY_BLOCK_SIZE=8;
登入後複製
範例指令:-
internal_tmp_disk_storage_engine=MyISAM
登入後複製
回退到MyISAM: 在如果上述措施無法解決問題,請考慮使用MyISAM作為內部資料的暫存引擎。將以下行加入my.cnf 檔案:
- 注意事項
- 查看表架構: 檢查表的列及其資料類型。考慮將包含過多資料的欄位變更為 TEXT 或 BLOB。
- 使用動態或壓縮行格式:表的 ROW_FORMAT=DYNAMIC 或 ROW_FORMAT=COMPRESSED 選項可以幫助優化資料的空間利用率- 大量行。
考慮分片:如果表包含大量數據,請考慮將其跨多個資料庫或表分片。這將減少每個表中的行大小。
以上是如何修復 MySQL 的「行大小太大」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!