Would "heroku db:reset" on the staging server prior to the db:push not ensure that the tables/data had been cleared?
Jamie On Feb 5, 11:08 pm, Alex Chaffee <ale...@gmail.com> wrote: > I've set up two Heroku instances, one for production and one for > staging. When I deploy to staging I copy the production database over > (using "heroku db:pull" followed by "heroku db:push --app > cohuman-staging") and run all migrations (using "heroku rake > db:migrate --app cohuman-staging"). So far so good. > > Sometimes we don't want to push to production right away; we need to > fix bugs or whatever on staging. But then we have to deploy to staging > again. > > Here comes the problem: since I copy the production database again, I > need to run migrations again. But if one of those migrations renames a > table, I get a Postgres error: > > /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/connection_adapters/abstract_adapter.rb:219:in > `log': An error has occurred, this and all later migrations canceled: > (StandardError) > > PGError: ERROR: relation "followings" already exists > : ALTER TABLE "interests" RENAME TO "followings" > > Apparently "heroku db:push" doesn't clear out the database first, so > the old new table (if that makes sense) is still around. > > My solution was to add the following in my "rename" migration: > > def self.up > execute "DROP TABLE IF EXISTS followings" > rename_table :interests, :followings > end > > It's kind of annoying, partly since this code is only necessary on > staging, so it's needlessly complicating things when run on > production... > > I'd be interested to hear if anyone has any cleaner solutions. For > example, if I start using Heroku Bundles for backup, can I restore > from my production backup to my staging database? (I admit I haven't > used bundles yet and am sketchy on the details so feel free to RTFM > me.) > > - Alex > > P.S. I've got a relatively clean rakefile for wrapping deploys to > Heroku with things like grepping git logs and sending an email; let me > know if anyone's interested and I'll post it in a gist or something. > > --- > Alex Chaffee - a...@cohuman.com -http://alexch.github.com > Stalk > me:http://friendfeed.com/alexch|http://twitter.com/alexch|http://alexch.tumblr.com -- You received this message because you are subscribed to the Google Groups "Heroku" group. To post to this group, send email to her...@googlegroups.com. To unsubscribe from this group, send email to heroku+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/heroku?hl=en.