前一段時間在MySQL中歸檔整理歷史數據時發現有很多的SQL無法被執行,剛剛開始以為時寫的SQL語句有問題,在把所有在執行的SQL拿出來看時發現語法并沒有錯,但是在INSERT語句執行時報錯:
而把INSERT語句LIMIT 1條插入是沒有問題的。初步估計是INSERT的事務過大,去查了下資料才知道原來MySQL在創建臨時表時缺省會將數據文件放在系統的/tmp目錄下如果系統的/tmp目錄空間不大就會無法創建臨時表,其中該路徑有MySQL的tmpdir參數控制,由于這個是歷史數據所以每個要插入的INSERT語句后都跟有SELECT大表必然會創建臨時表,但系統的/tmp目錄不夠,所以只能修改tmpdir,這個參數無法直接修改需要寫入配置文件重啟生效,在大空間的目錄下創建一個tmp文件夾修改權限(777)后給tmpdir使用
[mysqld] tmpdir = /data/tmp
再重啟MySQL生效,這樣問題解決。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。