2010年4月16日

將MySQL資料轉換為真正的UTF-8

以資料庫 lalala 為例:

1. 將MySQL 資料庫 匯出 lalala_latin1.sql 檔(以phpMyAdmin匯出即可) → 此時檔案編碼為UTF-8,預設建立資料表編碼為 latin1

2. 將 lalala.sql 檔內的「DEFAULT CHARSET=latin1」 皆改為 「DEFAULT CHARSET=utf8」,轉存為「lalala_utf8.sql」(注意是否含BOM)


3. 於MySQL5 內建立空資料庫 「lalala」,把 lalala_latin1.sql 或 lalala_utf8.sql 匯至 MySQL5

3.1「校對」選 「 latin1_swedish_ci 」+ lalala_latin1.sql (假的UTF-8):

使用phpMyAdmin:需使用改過 latin1 設定的版本 (ex. 使用phpMyAdmin2.6.0-rc1並改過設定) 進行匯入,SQL檔案需為「UTF-8未含BOM」,方能正常執行

使用mysql命令列:mysql -u root -p --default-character-set=latin1 lalala < lalala_latin1.sql

3.2「校對」選 「 utf8_general_ci 」+ lalala_utf8.sql:

使用phpMyAdmin:需使用「未改過」latin1 設定的版本 (ex. phpMyAdmin2.11.10) 進行匯入,SQL檔案「需為 UTF-8、有無BOM皆可」,方能正常執行

使用mysql命令列:mysql -u root -p --default-character-set=utf8 lalala < lalala_utf8.sql

(lalala 為欲匯入的資料庫名稱,lalala_utf8.sql 為匯入的SQL檔名)

4. 使用步驟 3.2 匯入真正的UTF-8資料時,conn_db 連線函數內、查詢sql指令前,需加上下列三行
mysql_query('SET NAMES `utf8`');
mysql_query('SET CHARACTER_SET_CLIENT=utf8');
mysql_query('SET CHARACTER_SET_RESULTS=utf8');

$result=mysql_db_query($sys_dbname,$sql,$link);
===> // PHP5.3以上已棄用mysql_db_query,需改使用下列程式碼

$db_selected = mysql_select_db($sys_dbname, $link);
if (!$db_selected)
{ die ('Can\'t use DB : ' . mysql_error()); }
$result=mysql_query($sql);

可參考的網址

[Linux]在掛載失敗時修改磁碟掛載表 fstab

[問題]在 fstab 設定開機自動掛載分區,reboot 後,出現 filesystem 錯誤,無法進入系統。
想修改fstab表,以便移除開機掛載分區的設定,
但在修復 filesystem (repairing filesystem) 模式下,fstab 檔案為”read-only”無法異動。

[解決方法]
[root@linux ~]# mount -n -o remount,rw /
加上-n則不更新/etc/mtab,加上-o提供額外的參數設置。
使用這一操作, / (根目錄)就可以讀寫,就可以更新 fstab 的內容了。



檢視系統目前掛載情況
cat /etc/fstab

/etc/fstab 是開機時的設定檔,不過,實際 filesystem 的掛載是記錄到 /etc/mtab 與 /proc/mounts 這兩個檔案當中的。

掛載: mount /dev/sdb1 /data1

開機掛載: /etc/fstab
* 根目錄 / 是必須掛載的﹐而且一定要先於其它 mount point 被掛載進來。
* 其它 mount point 必須為已建立的目錄﹐可任意指定﹐但一定要遵守必須的系統目錄架構原則
* 所有 mount point 在同一時間之內﹐只能掛載一次。
* 所有 partition 在同一時間之內﹐只能掛載一次。
* 如若進行卸載﹐您必須先將工作目錄移到 mount point(及其子目錄) 之外。

vi /etc/fstab
修改範例
/dev/sdb1 /data1 ext3 defaults 1 2
/dev/sdc1 /data2 ext3 defaults 1 2

先卸載
umount /dev/sdb1
umount /dev/sdc1

再掛載測試 mount -a
檢視掛載 df -hs

手動安裝MySQL

手動安裝MySQL on Windows

1.解壓縮,ex.mysql-noinstall-5.1.xx-win32.zip
2.將預設的my.ini ex.my-medium.ini (或其他) 改為 my.ini

3.my.ini:
3.1 將 [client] 和 [mysqld] 兩區段內的 /tmp/mysql.sock,
均改為 C:\mysql\tmp\mysql.sock 之類的路徑(windows下需使用 \ !!)
3.2 在[mysqld]區段下加上下述兩行,以設定 MySQL 的執行路徑及資料庫存放路徑:
basedir = C:\mysql
datadir = C:\mysql\data
4.安裝服務:
把mysql安裝成服務 C:\mysql\bin\mysqld(-nt) --install
移除服務: C:\mysql\bin\mysqld(-nt) --remove
※ MySQL 5.1.21 以後的版本就沒有 mysqld-nt 這支程式
5.啟動服務: C:\>NET START MYSQL
或用服務管理員來啟動 MySQL

手動安裝PHP5 on IIS6

IIS6(win2003)+PHP5 (ISAPI) 安裝攻略 (原文出處)
1. 確認 IIS 已經裝好,到 PHP 官網下載新版 PHP5 壓縮檔(ex.php-5.2.3-Win32.zip),
並且解壓縮(假設在 C:\PHP5)。
2. 將 C:\PHP5\php.ini-dist 改名為 php.ini,然後依需求編輯設定檔內容,範例:
include_path = ".;C:\Inetpub\wwwroot"
extension_dir = "C:\PHP5\ext"

magic_quotes_gpc = On
display_errors = On
error_reporting = E_ALL & ~E_NOTICE (預設 error_reporting = E_ALL 需關掉)
register_globals = Off
session.save_path = "C:\PHP5\tmp" (檢查此目錄是否存在)
upload_max_filesize = 2M (上傳檔案的最大size,可自行修改)
date.timezone = "Asia/Taipei"
SMTP = tts.tbmc.com.tw (Windows Only)
short_open_tag = On

//開啟需要的模組
extension=php_gd2.dll
extension=php_iconv.dll
extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_zip.dll
extension=php_pgsql.dll (for postgreSQL)

3. 對 C:\PHP5 目錄增加 IIS_WPG 群組及 IUSR_XXXX 使用者的讀取及執行權限。
(關鍵步驟,一定要兩個都增加,否則執行 PHP 會跳出驗證框)
※ 目錄下所有檔案皆需增加此權限,特別是php5isapi.dll)
※ 於IIS下建立虛擬站台時,該站台下所有程式檔案亦需執行步驟3,加入權限方可正常使用。

4. 加入系統環境變數 (讓 extension 及 php.ini 能順利被找到)。
我的電腦按右鍵→內容→進階→環境變數:系統變數

Path=C:\PHP5;
PHPRC=C:\PHP5

5. 開啟 IIS 管理員。

5.1 根目錄網站按右鍵→主目錄:設定→對應:快取處理ISAPI擴充程式:新增
5.2 執行檔:C:\PHP5\php5isapi.dll
副檔名:.php
指令動詞:限於為:GET,HEAD,POST
勾選 指令碼引擎,不勾選 確認該檔案是否存在
5.3 確定

6. 增加預設首頁 index.php
文件tab→新增:index.php→確定

7. 增加網頁服務延伸。
IIS:點選「網頁服務延伸」→新增網頁服務延伸:

7.1 延伸名稱:PHP ISAPI
7.2 需要的檔案:新增→C:\PHP5\php5isapi.dll
7.3 勾選 設定延伸狀態成允許
7.4 確定

8. 重新啟動 IIS 就 OK 囉~(非僅重新啟動WEB站台!)

※ php出現「No input file specified.」訊息時,將php.ini的doc_root註解起來,
再重新啟動IIS即可

※ postgreSQL: php_pgsql.dll要打開,僅適用於php5.2.5以下,
再不行就增加postgresql\bin目錄至"系統變數"
(參考: http://sea.tokyo.idv.tw/?p=76)