2014-01-17 1 views
0

Я напортачил мои миграции/схему/db до такой степени, что я не могу понять это.Rails/Heroku - Выпавший стол и не может его вернуть

На местном уровне у меня была таблица комментариев. Мне нужно было полностью перестроить эту таблицу, поэтому я открыл свою первоначальную миграцию «create comments table» и изменил ее вручную. Затем я изменил файл schema.rb, чтобы он соответствовал миграции. Затем я побежал rake db:reset и перестроил мою базу данных, и rake db:migrate, чтобы закончить его.

Это работало, казалось бы, хорошо в моей локальной среде разработчиков. Однако, когда я нажал на герою, я побежал heroku pg:psql и уронил таблицу comments. Затем я побежал heroku run rake db:migrate, думая, что он перестроит таблицу комментариев. Это не так. Таблица комментариев больше не существует, и я не могу понять, как ее воссоздать. У меня нет ничего важного в моей базеке heroku EXCEPT для таблицы users, поэтому я не могу сбросить все это.

Как я могу воссоздать эту таблицу и убедиться, что она соответствует файлу миграции, который я нажал на герою?

ответ

1

Прежде всего, вы не должны возвращаться в старые миграции и вручную изменять их. Просто выполните новую миграцию с указанными там изменениями. Читайте здесь о миграции: http://guides.rubyonrails.org/migrations.html

Это делается для того, чтобы вы не столкнулись с проблемой, с которой вы сейчас сталкиваетесь. Это также плохая практика, и если бы вы работали в группе, был бы полный хаос. Трудно точно сказать, какие отличия между вашей локальной машиной и героикой и тем, что вы изменили. Мое предложение состояло в том, чтобы отбросить и вашу локальную машину, и героку, и выполнить новую миграцию с вашими изменениями.

Я предполагаю, что вы используете git, чтобы вернуться к предыдущей версии до изменения в create_comments_table на вашей локальной машине. Вы можете сделать то же самое в Heroku в

https://dashboard.heroku.com/apps/nameofyourapp/activity 

В панели управления вы можете нажать на приложение и перейдите на вкладку деятельности. Там heroku ведет запись изменений, которые вы нажали. Вы можете откат к другому предыдущему изменению, зависав над версией.

Теперь, когда вы в основном перезагружаете приложение локально и на герою, вы можете определить перенос с тем, что вы хотите изменить в таблице комментариев.

Вы также можете быть заинтересованы в дополнении PG Backup. Тогда вы не будете так беспокоиться о потере данных. https://devcenter.heroku.com/articles/pgbackups

+1

Именно поэтому вы должны ** всегда ** иметь полную резервную копию своих производственных баз данных перед развертыванием чего-либо. –

+0

Весь хороший совет - Спасибо за советы. – Luigi

Смежные вопросы