2013-03-09 20 views
1

我有一個大於16MB的表,所以我打錯誤1114:表xxx已滿。在工作臺做MySQL MEMORY @@ max_heap_table_size在批處理文件中沒有注意到

CREATE tableX engine=memory SELECT * from tableY; 

的時候所以我正式進入

[email protected]@max_heap_table_size = 64000000; 

然後我創建工作的罰款。

但是,當我遷移被批處理文件調用的進程時,MySQL仍然認爲我的表是16MB。

我很困惑,但我確定這是對我的MySQL架構缺乏理解。從那裏知道任何人的建議,將永遠不勝感激。

+0

我也認爲我的問題的一部分是,我試圖使用mySQL的命令行調用-e開關設置我的max_heap_table。當我登錄到實際的MySQL提示符並運行set命令時,它就起作用了。 – user1458484 2013-03-10 00:48:21

+0

我確實接受了您的評論@Mchl - 我瞭解您告訴我的內容,如果我想讓新的max_heap_table_size參數保持不變,我需要更新配置文件。由於我既沒有my.cnf文件也沒有my.ini文件,因此我將my-innodb-heavy-4G.ini文件複製到my.ini中。我拿這個文件,因爲它特別引用了max_heap_table_size變量 - 這是正確的過程嗎?我是否會採取這一行動來解決問題,如果是的話,還有更好的辦法嗎? – user1458484 2013-03-10 01:02:13

回答

0

以這種方式設置的變量在服務器重新啓動時不會持續。要使其始終設置爲該值,請將其存入您的my.cnf/my.ini文件中。

+0

因此,在重命名模板.ini文件後,我的表格現在是64Mb,但我無法讀取現有的InnoDB表格。如果我設置default-storage-engine = InnoDB(這是拼寫/大寫),我的MySQL服務不會啓動。如果我將.ini文件重新設置爲default-storage-engine = MYISAM,那麼MySQL服務將啓動,然後我可以用SHOW ENGINES看到InnoDB不可用。 – user1458484 2013-03-10 01:35:21

+0

這可能需要在http://dba.stackexchange.com/上提出另一個問題 但是,您可能想嘗試將服務器置於脫機狀態,從MySQL的'data'文件夾中刪除'ib_logfile0'和'ib_logfile1'文件,然後啓動再次服務器。如果這些文件增長超過'my.ini'中設置的大小(或者文件中設置的大小減小),則會阻止InnoDB啓動。 – Mchl 2013-03-10 01:50:35

+0

感謝您的更多時間!我曾嘗試刪除日誌文件的方法,但沒有喜悅。我追蹤到了innodb_buffer_pool_size。它被設置爲2G,這對我的服務器來說太高了。我將其降至512M,確保我的默認存儲引擎是InnoDB並重新啓動了MySQL。它工作,並且我最初的問題與max_heap_table_size永久設置!萬歲,謝謝。 – user1458484 2013-03-10 02:15:57

相關問題