我有一個使用的存儲引擎創建的臨時表如下:MySQL的用戶是完全
CREATE TEMPORARY TABLE IF NOT EXISTS some_text (
id INT DEFAULT 0,
string varchar(400) DEFAULT ''
) engine = memory;
當我行插入它,我碰上一個#1114錯誤,因爲表已滿。它在mysql文檔中解釋說,更改tmp_table_size
和max_heap_table_size
不會爲增加用戶創建的臨時表的大小做任何事情,這正是我想我在這裏所做的。我怎樣才能讓這張桌子變大?
我希望能夠通過調用SET來動態地實現這一點,但我試過設置tmp_table_size
和max_heap_table_size
,它們都遠遠超出了我期望的數據量。那麼有誰知道如何解決這個表上的這個錯誤?感謝任何有幫助的人。
謝謝比爾,你總是有明確的MySQL的建議。作爲一個說明。我創建這個表作爲存儲過程的一部分。我不知道我是否可以負責任地增加整個數據庫上的'max_heap_table_size'。使用'set max_heap_table_size = 33554432'來爲我的存儲過程設置限制是明智的,然後一旦完成運行就可能將其設置回來?再次感謝。 – usumoio
是的,可以使用會話範圍設置'max_heap_table_size'(參見http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_max_heap_table_size),以便您可以進行更改影響有限。 –
即使將'max_heap_table_size'和'tmp_table_size'增加到4G,我也會收到「完整」消息! –