今天按照Agile Web Development with Rails 的depot例子,準備根據(jù)數(shù)據(jù)庫表自動生成scaffold,
那天在公司把這個例子做了一遍,覺得挺順利,沒想到今天換到家里的機子后,出現(xiàn)了不少問題.
在這里記錄一下出現(xiàn)的問題及解決辦法.
開發(fā)環(huán)境基本就是
WinXP
ruby1.8.6
rails1.2.3
MySQL Community Edition5.0.37
1.創(chuàng)建好數(shù)據(jù)庫和products表后,執(zhí)行
cmd>ruby script/generate scaffold product
結(jié)果報錯
exists app/controllers/


error Before updating scaffolding from new DB schema, try creating a ta
le for your model (Product)
在google上搜了一下,大概有2種解決辦法:
(1) 在database.yml文件中,在密碼項前面加個空格(原文地址
http://www.javaeye.com/post/264530)
(2) 數(shù)據(jù)表名稱沒有復(fù)數(shù),默認情況下,如果表為products,則命令相應(yīng)為....scaffold product
這個規(guī)則可以在相應(yīng)的配置文件中修改,具體可以google,這里不多講了.
這兩種方法都試過了,但問題依舊.
(3)無意中打開database.yml文件,發(fā)現(xiàn)有這樣幾句提示:
# Install the MySQL driver:
# gem install mysql
# On MacOS X:
# gem install mysql -- --include=/usr/local/lib
# On Windows:
# gem install mysql
# Choose the win32 build.
# Install MySQL and put its /bin directory on your path.
于是執(zhí)行了gem install mysql,之后問題就解決了.奇怪的是我在辦公室一樣的環(huán)境,沒有執(zhí)行g(shù)em install mysql,也沒有出現(xiàn)過該問題.唯一的區(qū)別,呵呵,大概就是家里網(wǎng)速慢,那天gem intall rails時
中斷了好幾次,不過這個問題總算解決了..
2. 連接數(shù)據(jù)庫編碼問題
生成scaffold后,就可以CRUD了,但是發(fā)現(xiàn)執(zhí)行完CRUD后,mysql數(shù)據(jù)庫中記錄為亂碼,執(zhí)行
mysql>set names gbk后,還是顯示亂碼,depot數(shù)據(jù)庫、products表均已設(shè)置為utf8格式,在
database.yml中加入
encoding:utf8后,問題解決.
development:
adapter: mysql
database: depot
username: root
password:
host: localhost
encoding: utf8