2011-08-08 215 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

相关问题