還原因MySQL wait_timeout造成的資料亂碼
Posted by admin - 16/06/09 at 07:06:29 下午以前寫要執行比較久的PHP程式~都只有在前面加上set_time_limit(秒數);~
以免出現Maximum execution time of 30 seconds exceeded的錯誤訊息~跑超過30秒就被停了~
最近才發現~
如果有用到MySQL~程式執行超過MySQL設定的wait_timeout~也會有問題~
超過wait_timeout之後~原本用mysql_connect建出的link會不見~
出現Mysql has gone away的錯誤訊息~
這時候程式還是會繼續執行~不過不管讀還是寫資料庫~中文部分都會變成亂碼~
解決的方法~就是執行mysql_query("SET wait_timeout=秒數");~
延長wait_timeout的時間~就OK囉~
(不過還是很不解~明明已經gone away了~為什麼還可以存取~只是編碼出問題而已勒?)
那如果有很珍貴的資料~已經因此變成亂碼存進資料庫的怎麼辦勒?
今天在我鍥而不捨用65X65種charset組合嘗試下~
終於被我發現可以把亂碼還原回來的方法啦~~~~~~哇哈哈~
就是用mb_convert_encoding('亂碼字串','Windows-1252','auto');
(如果你的資料庫跟我一樣是utf-8的~上面的auto也可改成utf-8)
就可以得到還原成UTF-8的正確字串啦~~~~
(Windows-1252不曉得會不會跟不同系統改變~不過我是在linux上設utf-8的資料庫~)
No Comments yet
抱歉,本篇的迴響表單已關閉。
Powered by WordPress with GimpStyle Theme design by Horacio Bella.
Entries and comments feeds.
Valid XHTML and CSS.