2013-11-07 2 views
0

Вид странного вопроса, я подозреваю. Я просто объяснить эту проблему сразу же ниже, а затем дать фон, который объясняет, как я попал сюда, для тех, кто заинтересованИзменит ли моя схема Rails удаление данных?

ПРОБЛЕМА:

Моя схема находится в таком состоянии, в результате миграций, что оно отмечает меня как удаление и добавление тех же столбцов. Другими словами, я получаю это, когда я дифф schema.rb:

- t.integer "cut_id" 
- t.datetime "created_at", :null => false 
- t.datetime "updated_at", :null => false 
- t.integer "animal_id" 
+ t.datetime "created_at",      :null => false 
+ t.datetime "updated_at",      :null => false 
+ t.integer "animal_id" 
+ t.integer "cut_id" 

Речь идет о том, что в то время как это не чистая добавить/удалить столбцы, если я нажму этот код продукции и запустить миграцию, она будет по сути, уничтожить существующие данные, даже если они не удаляют столбцы в сети.

В этом случае? Кто-нибудь знает, будет ли БД удаляться буквально, а затем добавить четыре столбца или понять, что изменений нет? Если он удалит их, может ли кто-нибудь подумать о способе исправить это и сохранить данные для повторной установки ДО того, как он будет удален? Я не возражаю против времени задержки между стиранием данных и их заменой.

, как я здесь:

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

К счастью, это было только на местном уровне. К несчастью, я просто сбросил HEAD HEAD ^, чтобы выбросить мою работу, но, несмотря на то, что миграции исчезли, схема оставалась упрямо в состоянии после-плохого миграции и не могла быть сброшена или что-то еще. Поэтому я прошел весь этот процесс, пытаясь восстановить старые миграции и откинуть их назад, наполовину успешно, а затем написать другие миграции, чтобы полностью отменить изменения, которые я полукрутил назад.

Огромный беспорядок, в результате только этой проблемы. В любом случае, это не проблема, и я могу развернуть/спать спокойно?

+1

Добавленные ('+') и удаленные ('-') части являются одинаковыми, они просто находятся в другом порядке. Поэтому, пока вы не принимаете ничего о порядке столбцов в своей таблице, вы должны быть в порядке. –

ответ

1

Итак, здесь есть две разные проблемы - миграция и схема. Если вы запускаете миграции, которые удаляют столбцы, столбцы будут удалены, как и любые данные, которые они содержат. Поэтому вы, вероятно, хотите изменить свои миграции и удалить или изменить любые миграции, которые удаляют столбцы, которые вы хотите сохранить. Будьте очень осторожны, чтобы любые миграции не удаляли данные, которые вы хотите сохранить.

Схема schema.rb по существу не имеет отношения к вашей производственной базе данных, если вы явно не загружаете схему с помощью команды rake (rake db: schema: load). Это уничтожит ваши данные, но это не то, что вы делаете с вашей производственной системой в качестве общего правила.

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