2006年7月31日 星期一

升級 LifeType 1.1 beta1 的小撇步

千呼萬喚,等了一年, LifeType 1.1 終於出 beta1 了。

因為 1.1 版有修改資料庫結構,所以建議,在測試 1.1 beta1 時,千萬別拿正式服務的網站開刀啊。否則一不小心,資料毀了可是救不回來的。我自己也是在測試環境下反覆升級了四、五次,才把資料庫正確轉換,沒有再出現亂碼

在官方的釋出文章裡說,升級時,只要保留原來的 config/config.properities.php ,其餘的用新的程式覆蓋,再執行 wizard.php 就可以了。這原本沒錯,不過,還是有一些小地方要注意,主要還是資料庫編碼的問題:

先說做法:

建議手動編輯 config/config.properities.php 檔,因為裡面多了兩個新的參數:

$config["db_host"] = "localhost";
$config["db_username"] = "root";
$config["db_password"] = "password";
$config["db_database"] = "lifetypedb";
$config["db_persistent"] = true;
$config["db_character_set"] = "utf8";
$config["db_prefix"] = "lt_";

紅色部份, db_persistent 指定資料庫連結方式,建議用原預設值就好;另一個 db_character_set 是重點,請設為 utf8 之後,再執行 wizard.php 安裝程式。其餘的參數,應該不用說明吧。

為什麼要這樣做呢?而不使用原來的 default 就好?因為,這個參數是指定資料庫的編碼方式。絕大部份的 LifeType 管理員應該都是使用 utf8 編碼的資料庫存放資料吧。但是主機的 MySQL 預設編碼卻很可能是 latin1 或其他方式,尤其是租國外虛擬主機的人更容易遇到這種情形。若是 db_character_set 使用 default ,那 LifeType 就會用 MySQL 的預設編碼方式幫你做升級時的資料庫轉換。於是,錯誤出現了。

我的測試環境裡, MySQL 的預設連線是 latin1 ,使用 default 設定值升級後遇到的狀況有兩種:

一、所有的中文全都變成問號(?)。

進資料庫看,文章都還是 utf8 中文,原以為此時將 db_character_set 改為 utf8 就搞定了,結果,文章是沒問題了,但是另一個問題出現了:

二、引用頁的中文還是變成問號(?) 。

原來, LifeType 1.1 將引用與迴響兩個表格合併了,所以所有的引用全都被移到迴響的表格裡。但是,升級時的 db_character_set 是 default ,所以這裡已經全都變成亂碼(問號)了。

所以,記得哦,在升級之前,把 db_character_set 設定成 utf8 。那麼,不管你主機的 MySQL 的預設連線是什麼語言,都能正確的轉換你的 LifeType 原來的 utf8 資料庫。

什麼情況下 db_character_set 使用 default 不會出問題?

1.MySQL 已經調校好使用 utf8 預設連線,或者

2.資料庫原來就不是 utf8 的格式。

在這種情形下,跟據程式碼裡的寫法,會比指定 utf8 快一點點啦。

祝大家升級愉快啦!

沒有留言:

張貼留言