這次因為有些地方中文字儲存後會變成一堆問號 ???????????

所以發現 rake db:migrate 時會需要注意 collation 的問題。

確認的話,如果有裝 phpmyadmin ,事情很簡單,反正有介面可用找一找就可以知道結果。

如果沒裝得下指令的話,指令如下:

查看db
use db_name;
然後下 status 就可以看到 db 的 collation

查看table
一般查看 table 指令是下 describe table_name; 但是這不會出現 collation
所以要改下 show full fields from table_name;

參考網頁:MySQL 於 命令列 查看 Table 權限、註解等欄位資訊

 

治標的方法是 migrate 檔案內,直接指定 table 的 collation 校對格式,寫法如下:

create_table (:table_name, :options => 'ENGINE=InnoDB DEFAULT CHARSET=utf8')

 

如果 rake 指令已經下了,可以選擇回溯到某個日期的 migrate,指令為:

rake db:migrate VERSION=20100315074536
VERSION= 之後是 migrate 檔名開頭的 timestamp

 

如果不想回溯要直接改 collation ,指令是:

更改 db 的 collation
alter database db_name collate utf8_unicode_ci;

 

更改 table 的 collation
alter TABLE table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

笨笨小蟹 發表在 痞客邦 PIXNET 留言(0) 人氣()