星期三, 2月 10, 2010

利用scaffold做資料庫應用

天啊.遇到太多問題了
因為rails升到2.0有些語法不一樣
看書寫不出來,上網查才知道語法有不同了
而rails db:migrate又需與database溝通
所以事前也得先設定好...
練習第一個saffold做資料庫 還沒感受到 就先覺得好辛苦
不寫下來將來換個環境一定又忘了...
不過設定完... 還真的挺開心的 沒寫到任何sql所有欄位的新增、修改都做好了...
人說「頭過身就過」 希望接下來的路順一點...

建立專案
rails demo -d mysql //指定db可順便改好database.yml
1.設定資料庫
問題:解決rails的sqlite3.dll錯誤
沒有sqlite的dll是做呼叫sqlite的function...

問題:缺mysql
看範示的console畫面還想說~
哇~~跟mysql都整合在一起來
原來還是得自己先建立mysql環境
下載安裝mysql吧




2.scaffold
設定好資料庫就是來用scaffold
因為升級到rails 2的關係 所以下的參數會不一樣
1.0:ruby script/generate scaffold Movie Admin //直接指向Admin
2.0:ruby script/generate scaffold Movie title:string description:text one_sheet_url:string

Rails 2.0 scaffolding step by step.

3.rake db:migrate
這一步會遇到以下的問題
問題:syntax error on line xxx
一般來說是database.yml的設定出錯
冒號後面一定要有一個空白,否則會出錯!!
adapter: mysql
...
username:root <= 冒號後要空隔,不然會說argument錯誤

MySql問題
1.權限問題
解法:當然就要開放權限啦,另外注意不能用root

2.Commands out of sync; you can't run this command now: SHOW TABLES
-Mysql::Error: Commands out of sync; you can't run this command now: SHOW TABLES解决方案
-Rails2.1.0出现的问题undefined method `each' for
解法:從mysql/bin/目錄下找出libmySQL.dll,再copy到ruby/bin
*有時一樣會失敗,請注意抓的libmySQL.dll是跟MySQL server版本相同
我就抓了5.1.43的dll,連5.0.45... 問題一樣...硬是從5.0.45找出dll才pass


其他參考
第一個資料庫應用(with scaffold)--Ruby on Rails 完全新手手冊

沒有留言: