У меня есть две машины ... машина для разработки и производственная машина. Когда я впервые привел приложение rails на рабочий сервер, у меня не было проблем. Я просто импортировал schema.rb, запустив rake db: schema: load RAILS_ENV = production. Все было хорошо.Почему rake выбрасывает эту ошибку миграции Rails?
Итак, затем на моей машине разработки я сделал несколько изменений и другую миграцию, а затем скопировал новое приложение на производственную машину. Затем я попытался обновить базу данных, выполнив rake db: migrate RAILS_ENV = production. Я получаю следующую ошибку: «В базе данных уже есть объект с именем« schema_migrations ».»
Я думаю про себя, я не шучу Рейк ... ты его создал! Я побежал следом на рейке, и кажется, что рейк думает, что это первый раз, когда он когда-либо побежал. Однако, анализируя таблицу «schema_migrations» на моей машине разработки и моей машине, вы можете видеть, что существует разница в одной миграции, а именно та, которую я хочу перенести.
Я также попытался явно определить номер версии, но это тоже не сработает.
Любые идеи о том, как я могу обновить свой производственный сервер?
Update:
Позвольте мне начать с того, что я не могу просто «капля» база данных. Это уже производственный сервер с чуть более 100 тыс. Записей. Что произойдет, если подобная проблема возникнет в будущем? Am, я просто бросаю таблицу каждый раз, когда возникает проблема с базой данных? Это может сработать на этот раз, но это не похоже на практическое долгосрочное решение каждой проблемы с базой данных. Я сомневаюсь, что проблема у меня сейчас уникальна для меня.
Похоже, что таблица «schema_info» и таблица «schema_migrations» одинаковы. В моей настройке у меня есть только «schema_migrations». Как указывалось ранее, разница между таблицей «schema_migrations» на производственном сервере и машиной разработки является всего лишь одной записью. То есть, запись, содержащая номер версии изменения, который я хочу перенести.
Из книги, которую я прочитал «Просто Rails 2», говорится, что при первом переходе на производственный сервер вместо запуска rake db: migrate нужно просто запустить rake: db: schema: load.
Если это имеет значение, я использую Rails версии 2.1.
yep, таблица schema_migrations - это ваш ключ, его, вероятно, нет. или не заселен или что-то на вашем производственном сервере – 2008-10-25 04:36:17