以資料庫 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);
可參考的網址
2010年4月16日
手動安裝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
2009年3月10日
[MySQL]Can't open file: 'xxx.MYI'. (errno: 144)
Can't open file: 'xxx.MYI'. (errno: 144)
OS下命令: myisamchk -f (table所在路徑/)xxx.MYI 即可修復
OS下命令: myisamchk -f (table所在路徑/)xxx.MYI 即可修復
2008年12月23日
[MySQL]PHP4無法連結MySQL4.1以上版本
- 問題描述:PHP4版本的 mysql client 3.23.58 無法連線 MySQL 4.1 以上版本資料庫(轉貼自NCUCCWiki
- 錯誤訊息: Client does not support authentication protocol requested by server; consider upgrading MySQL client
- 原因:因為 MySQL 4.1 以上版本為了提高安全性,使用了新的密碼驗證機制。如此,MySQL 的 Client Library 需要 4.0 版本以上。但目前在 Client 端所使用的 PHP 版本若為 5.0 以下(如 4.3.9),其內建的 MySQL Library 大都為 3.23,並不支援新版的密碼驗證機制。
- 解決方案(以下擇其一):
- 將 PHP 升級為 5.0版以上
- 切換 PHP 4 的 MySQL extension 為 MySqlLi
- [建議]在 MySQL console 下,更新密碼形式改為 OLD_PASSWORD() (設回原來舊版的密碼驗證機制):
- mysql> UPDATE mysql.user SET Password = OLD_PASSWORD('新密碼') WHERE Host = '主機localhost或IP' AND User = '帳號';
- mysql> FLUSH PRIVILEGES;
- mysql> UPDATE mysql.user SET Password = OLD_PASSWORD('新密碼') WHERE Host = '主機localhost或IP' AND User = '帳號';
訂閱:
文章 (Atom)