我有一个一次性脚本,我用它来将一些数据加载到我的应用程序的数据库中。
这有点大,所以我在这里说:https://gist.github.com/097fb5a30ce84522077a
当针对DATABASE_URL环境变量指定的本地计算机(甚至远程实例)上的本地Postgres实例执行时,编写的代码完美无缺地。
但是,Heroku绝对不行。执行链接的ruby脚本会给我这个错误:
~ $ ruby importprofiles.rb
/app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.9/lib/active_record/attribute_assignment.rb:88:in `block in assign_attributes': unknown attribute: owner_id
(ActiveRecord::UnknownAttributeError)
我的工作流程基本上是:
heroku create mybot
)git commit -m 'initial commit' && git push heroku master
)heroku run rake db:setup
)heroku restart
)heroku run bash
)curl http://blah.com/profiles.ini > profiles.ini
)ruby importprofiles.rb
)为什么我在Heroku上获取本地有效代码的未知属性错误?
答案 0 :(得分:2)
您的schema.rb
与您的真实数据库不匹配,或者您从未尝试过使用Profile
所有者。你在schema.rb
:
create_table "profiles", :force => true do |t|
t.string "title", :limit => 100
t.integer "owner"
t.datetime "timeset"
t.string "whoset"
end
t.integer "owner"
在owner
表格中定义了一个名为profiles
的列,但您需要owner_id
列。
也许你做了一个手册alter table
来重命名开发环境中的列。或者这可能是您第一次使用此代码路径。
在任何情况下,您都需要迁移才能将profiles.owner
重命名为profiles.owner_id
。或者,由于您刚开始使用,您可以手动编辑schema.rb
以重命名该列并重建您的Heroku数据库。我只需手动修补schema.rb
,如果您没有任何数据需要担心,请重新开始。