2013-02-14 53 views
1

我使用标准配置(SQLite 3)开发了我的应用程序。我想在heroku上部署,并且必须更改为postgresql。错误:将SQLite迁移到Postgres

但是当我试图迁移我的数据库模式时遇到了这个错误。

rake db:migrate 
rake aborted! 
/Users/adrianschnell/Sites/bills_cmd/config/initializers/session_store.rb:3: syntax error, unexpected ':', expecting $end 
...sion_store :cookie_store, key: '_bills_cmd_session' 
          ^
/Library/Ruby/Gems/1.8/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:245:in `load' 
/Library/Ruby/Gems/1.8/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:245:in `load' 
/Library/Ruby/Gems/1.8/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:236:in `load_dependency' 
/Library/Ruby/Gems/1.8/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:245:in `load' 
/Library/Ruby/Gems/1.8/gems/railties-3.2.11/lib/rails/engine.rb:588 
/Library/Ruby/Gems/1.8/gems/railties-3.2.11/lib/rails/engine.rb:587:in `each' 
/Library/Ruby/Gems/1.8/gems/railties-3.2.11/lib/rails/engine.rb:587 
/Library/Ruby/Gems/1.8/gems/railties-3.2.11/lib/rails/initializable.rb:30:in `instance_exec' 
/Library/Ruby/Gems/1.8/gems/railties-3.2.11/lib/rails/initializable.rb:30:in `run' 
/Library/Ruby/Gems/1.8/gems/railties-3.2.11/lib/rails/initializable.rb:55:in `run_initializers' 
/Library/Ruby/Gems/1.8/gems/railties-3.2.11/lib/rails/initializable.rb:54:in `each' 
/Library/Ruby/Gems/1.8/gems/railties-3.2.11/lib/rails/initializable.rb:54:in `run_initializers' 
/Library/Ruby/Gems/1.8/gems/railties-3.2.11/lib/rails/application.rb:136:in `initialize!' 
/Library/Ruby/Gems/1.8/gems/railties-3.2.11/lib/rails/railtie/configurable.rb:30:in `send' 
/Library/Ruby/Gems/1.8/gems/railties-3.2.11/lib/rails/railtie/configurable.rb:30:in `method_missing' 
/Users/adrianschnell/Sites/bills_cmd/config/environment.rb:8 
/Library/Ruby/Gems/1.8/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:251:in `require' 
/Library/Ruby/Gems/1.8/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:251:in `require' 
/Library/Ruby/Gems/1.8/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:236:in `load_dependency' 
/Library/Ruby/Gems/1.8/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:251:in `require' 
/Library/Ruby/Gems/1.8/gems/railties-3.2.11/lib/rails/application.rb:103:in `require_environment!' 
/Library/Ruby/Gems/1.8/gems/railties-3.2.11/lib/rails/application.rb:297:in `initialize_tasks' 
Tasks: TOP => db:migrate => environment 

我不知道我现在要做什么。 我的宝石文件包括了“PG”和我的database.yml的样子:

# PostgreSQL v0.8.x 
# gem install pg 
development: 
    adapter: postgresql 
    encoding: unicode 
    database: bills_cmd_dev 
    pool: 5 
    username: adrianschnell 
    password: 
    # 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: postgresql 
    encoding: unicode 
    database: bills_cmd_test 
    pool: 5 
    username: adrianschnell 
    password: 

运行PostgreSQL - 通过终端我可以访问它。

编辑: 我注意到,我在尝试创建postgre数据库时出现以下错误:

rake db:create:all 
rake aborted! 
syntax error on line 18, col 11: `' 
/Library/Ruby/Gems/1.8/gems/railties-3.2.11/lib/rails/application/configuration.rb:115:in `database_configuration' 
/Library/Ruby/Gems/1.8/gems/activerecord-3.2.11/lib/active_record/railties/databases.rake:25 
Tasks: TOP => db:create:all => db:load_config 
(See full trace by running task with --trace) 
+0

其中之一,这两个错误都是rails中的语法错误,并且与Postgres无关。关于第一个错误 - config/initializers/session_store.rb的第三行是什么?至于第二个,看起来像输出中只列出了核心文件 - 是否有更多的跟踪或任何其他有关该错误的信息? – 2013-02-14 20:24:23

+0

session_store中的第3行是“BillsCmd :: Application.config.session_store:cookie_store,key:'_bills_cmd_session'”。是的,我认为这只是制造麻烦的红宝石。在1.9上更新ruby的最佳方式是什么?使用rvm命令“rvm install current && rvm use current”? – Adrian 2013-02-14 20:56:42

+0

这并不容易......但我得到了Ruby 1.9.3的安装。我现在手动创建了postgre,并通过轻敲进行迁移。但是当我尝试运行这个RoR应用程序时,我收到了一条新的错误消息 - 我粘贴了[pastebin](http://pastebin.com/QkiKcFS6)。我甚至在“软件包安装”和“软件包更新”之后收到此消息 – Adrian 2013-02-14 21:33:10

回答

0

搜索和测试不同的建议了几个小时之后,我尝试了那些在这里:stackoverflow

特别是Darren的条目是我的解决方案。现在我的RoR App正在运行Postgre。