2011-08-08 216 views
0

所以我在第239頁的「用rails第四版的敏捷web開發」。我的瀏覽器中有一個指向localhost:3000的選項卡,它工作正常。另一個標籤是指向 「depot.thefonso.com」,我得到這個錯誤:ActiveRecord :: StatementInvalid StoreController#index

「的ActiveRecord :: StatementInvalid在StoreController#指數」

的SQLite3 ::的SQLException:沒有這樣的表:產品:選擇「產品」 * FROM 「產品」 ORDER BY標題

Rails.root:/用戶/吉迪恩/桌面/ Rails_work /車廠

...

應用程序/控制器/ store_controller.rb:7: `index'

這裏是store_controller.rb線7 ....

@products = Product.all 

任何大師可以點我在正確的方向?

,這裏是我的database.yml

# SQLite version 3.x 
# gem install sqlite3 
    development: 
    adapter: sqlite3 
    database: db/development.sqlite3 
    pool: 5 
    timeout: 5000 

# Warning: The database defined as "test" will be erased and 
# re-generated from your development database when you run "rake". 
# Do not set this db to the same as development or production. 
test: 
    adapter: sqlite3 
    database: db/test.sqlite3 
    pool: 5 
    timeout: 5000 

production: 
    adapter: sqlite3 
    database: db/production.sqlite3 
    pool: 5 
    timeout: 5000 

回答

0

您是否運行cap deploy:migrations(按照第237頁的說明)?

從您的症狀中,您的數據庫沒有定義產品表。我還會注意到你沒有從sqlite3更改爲mysql。

請在您的兩臺機器上運行下面的命令,並比較產生的模式:

sqlite3 db/development.sqlite3 .schema 

sqlite3 db/production.db .schema 
+0

嗯,我有pdf版本,並且「cap deploy:migrations」沒有從本章的開頭(235)列出到頁碼240 ... no提及它。好奇。 – thefonso

+0

如果您要通過PDF頁碼,然後繼續前進! :-)下一步是設置你的數據庫。 –

+0

我現在在第142頁(pdf版本)我在「與Capistrano遠程部署」。在我的gemfile中使用'mysql2','0.2.7'並將mysql更改爲database.yml中的mysql2後,我能夠無誤地運行命令「rake db:setup RAILS_ENV =」production「」。幾乎......它告訴我「depot_production已經存在」,但是按照pdf文本第241頁的說明進行操作。只是踢我跑你提到的兩個命令的架構。 「sqlite3 db/production.db .schema」什麼都沒產生......只是一片空白。第一個命令產生輸出。 – thefonso

0

的問題是,Rails可以找不到表,如果它工作在當地是最有可能只是一個配置問題。

檢查在depot.thefonso.com上運行的應用程序的database.yml配置。這很可能是在localhost上查找數據庫,並且無法在遠程服務器上找到它。

+0

嗯,這就是物理文件位於同一位置,現在的東西。我在迭代K1「部署」文本並沒有表明這個錯誤是否正常,我是否在那裏。文字實際上意味着應用程序應該工作正常。我將發佈我的database.yml的內部結構: – thefonso

相關問題