顯示具有 MySQL 標籤的文章。 顯示所有文章
顯示具有 MySQL 標籤的文章。 顯示所有文章

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);

可參考的網址

手動安裝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 即可修復

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,並不支援新版的密碼驗證機制
  • 解決方案(以下擇其一):
  1. 將 PHP 升級為 5.0版以上
  2. 切換 PHP 4 的 MySQL extension 為 MySqlLi
  3. [建議]在 MySQL console 下,更新密碼形式改為 OLD_PASSWORD() (設回原來舊版的密碼驗證機制):
mysql> UPDATE mysql.user SET Password = OLD_PASSWORD('新密碼') WHERE Host = '主機localhost或IP' AND User = '帳號';
mysql> FLUSH PRIVILEGES;