顯示具有 Database/MySql 標籤的文章。 顯示所有文章
顯示具有 Database/MySql 標籤的文章。 顯示所有文章

2009年11月11日 星期三

改造IT新風貌 - 全球最新資料庫應用研討會


  幾個星期前在網路上有看到 Sun 在高雄辦研討會的訊息,內容是有關資料庫的部份,於是我就報名參加了,研討會名稱是:改造IT新風貌 - 全球最新資料庫應用研討會。

  這一天,我原本設定是要來聽聽看 MySQL 的發展。怎麼知道開場就先聊起 Oracle 把 Sun 買下來的事,後面又都是儲存設備和硬體的規格比較,真的是很失望,有點浪費時間。

  不過即然來了,就好好聽看看現在最新的技術吧。現在的趨勢都是把資料 Load 到 Memory 去,因為資料在硬碟的話,以硬碟來搜尋受限於機械的動作,速度還是快不起來。所以,現在都將資料放到 Memory 去。

  參加這一場研討會,感覺有點像是 Sun 和 Oracle 的硬體產品發表會。

  在會中,有一位講師,他講了一句話,我在儲存設備已經十年了,所以,他知道 ... ;我那個時候心裡就在想,人家在同一個業界十年的時間,今天可以上台掛一個大中華區資深顧問,而我,寫軟體也快7~8年了,還是個 Programer 。也許人家能力就是比我好呀。真的是很酸葡萄心理。

  我是不是應該要多出去看看,現在外面的世界,感覺自己最少已經脫節了三四年有了。以後有機會參加研討會,一定要再去。

2008年4月30日 星期三

在小白上安裝 MySQL

最近因為工作的需求所以要安裝 MySQL 。
以往在安裝 MySQL 都是在 Windows 版本下安裝,這算是第一次在 Mac 的環境下安裝 MySQL。整個過程真的是很不順利。

首先我到 MySQL 的官網上去抓到一個 5.0.51a 的版本。
現在 MySQL for Mac 的版有 package format 和 TAR package 二種,為了求方便,我 Download package format版本。這個版本只需要按下一步下一步,MySQL 就會很順利地安裝完成。很幸運的這個過程也都沒有發生什麼問題。
我也順便安裝 MySQL 所提供的 Tool 。

當這一切美好的事情都完成後,我想 MySQL 應該是可以使用了。
沒錯, 我將 Create Table 和 Insert data 的 Script 執行後,但在 Database 中欄位的中文資料都變成了 ??

天呀!我的中文變成了亂碼了。
在 MySQL 的 Command 模式下執行 status; 就可以顯示目前 MySQL 的狀態。

mysql> status;
--------------
./mysql Ver 14.12 Distrib 5.0.51a, for apple-darwin8.11.0 (powerpc) using readline 5.0

Connection id: 6
Current database: cps
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.0.51a-log MySQL Community Server (GPL)
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: latin1
Db characterset: latin1
Client characterset: latin1
Conn. characterset: latin1
UNIX socket: /tmp/mysql.sock
Uptime: 3 min 51 sec

Threads: 1 Questions: 126 Slow queries: 0 Opens: 12 Flush tables: 1 Open tables: 6 Queries per second avg: 0.545

原來是 characterset 都 latin1 ,所以無法顯示中文。
在網路上找到一些解決 MySQL 無法顯示中文的方法。
我在 /etc 下建了一個 my.cnf 的檔案,寫入



[client]
port = 3306
socket = '/tmp/mysql.sock'
default-character-set= utf8

[mysqld]
port = 3306
default-character-set= utf8
collation_server=utf8_unicode_ci
character_set_server=utf8
socket = '/tmp/mysql.sock'


存檔後再將 MySQL 重新下上,status 看一下:
mysql> status;
--------------
./mysql Ver 14.12 Distrib 5.0.51a, for apple-darwin8.11.0 (powerpc) using readline 5.0

Connection id: 6
Current database: cps
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.0.51a-log MySQL Community Server (GPL)
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: latin1
Db characterset: latin1
Client characterset: utf8
Conn. characterset: utf8
UNIX socket: /tmp/mysql.sock

看起來只有 Client 和 Conn. 的部份有改變,但對於 Db 和 Server 都還是一樣。
在 Create database 時,我在 Create database ... 後再加上 character set 。

CREATE DATABASE db_name CHARACTER SET utf8 COLLATE utf8_swedish_ci;
在 Create database 後再以 status 看,只剩 Server characterset 是 latin1。不過再將資料 Insert 到 Table 中,還是亂碼。
我就為了這個問題,耗了一個下午。

後來我再上 MySQL 的官網去 DownLoad 5.0.51b 版.

在網路上找到一個方法,可以解決中文的問題。
將 /usr/local/mysql/support-files/my-medium.cnf Copy 到 /etc 下,並更名為 my.cnf
cp /usr/local/mysql/support-file/my-medium.cnf /etc/my.cnf

  • my-huge.cnf: 適合 1GB - 2GB RAM的主機使用。
  • my-large.cnf: 適合 512MB RAM的主機使用。
  • my-medium.cnf: 只有 32MB - 64MB RAM 的主機使用,或者有 128MB RAM 但需要運行其他伺服器,例如 web server。
  • my-small.cnf: 記憶體少於 64MB 時適用這個,MySQL 會佔用較少資源。

在 my.cnf 中 [client] 下加入
default-character-set=utf8

[mysqld]下加入
default-character-set=utf8
default-collation=utf8_general_ci

然後再重新啟動 MySQL 就可以了。
不曉得是不是 5.0.51a 和 5.0.51b 有什麼不同,這樣子居然好了。