Почему миграции базы данных использования вместо версии управляли схемой

Открывающиеся и закрывающиеся фигурные скобки составляют область видимости. Вы можете получить доступ к переменной, объявленной в области видимости внутри этой области, а не за ее пределами. В вашем случае цикл while находится вне закрывающих фигурных скобок, поэтому он выходит за пределы области действия do. Именно поэтому вы не можете получить доступ к переменной из цикла while. Сначала необходимо объявить переменную перед циклом do while .

12
задан wich 18 October 2012 в 09:25
поделиться

6 ответов

почему бы не проверять schema.rb в управлении версиями и вносить изменения в файл непосредственно?

Поскольку сама база данных не находится в синхронизации с управлением версиями.

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

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

9
ответ дан 2 December 2019 в 06:27
поделиться

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

6
ответ дан 2 December 2019 в 06:27
поделиться

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

Как Вы говорите, управление версиями является решенной проблемой. В какой-то степени я согласился бы: это очень решено для текстовых файлов, в частности, меньше для других типов файлов и не действительно очень вообще для ресурсов, таких как базы данных.

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

До объявления содержания таблицы в модели я полагаю, что это - то, что DataMapper делает (никакой личный опыт). Я думаю, что могут быть некоторые возможности вывода DDL там также.

"даже если Вы не можете думать о лучшем пути, разве миграции не являются видом общего количества?"

Да. Но они - меньше общего количества, чем что-либо еще, что мы имеем. Действительно сообщите нам при завершении негрубой альтернативы.

2
ответ дан 2 December 2019 в 06:27
поделиться

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

Скажите, что старая версия моей схемы имеет a feet и inches столбец. В целях эффективности я хочу объединить это в просто inches столбец для создания сортировки и поиска легче.

Моя миграция может объединить все ноги и данные дюймов в столбец дюймов (ноги * 12 + дюймы), в то время как это обновляет базу данных (т.е. непосредственно перед тем, как это удаляет feet столбец)

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

5
ответ дан 2 December 2019 в 06:27
поделиться

Я предполагаю данный, "даже если Вы не можете думать о лучшем пути", затем да, в главной схеме вещей, миграции являются видом общего количества. Так Ruby, направляющие, ORMs, SQL, веб-приложения...

Миграции имеют (весьма значительное) преимущество, что они существуют. Получать-"грязными"-но-существовать имеет тенденцию побеждать по Приятному-но-не-существует. Я уверен там, вероятно, приятные и несуществующие способы переместить Ваши данные, но я не уверен, что это означает.:-)

2
ответ дан 2 December 2019 в 06:27
поделиться

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

Альтернатива - то, что более многочисленные группы программистов (например, 10-15 Java-разработчиков, где я работаю) заканчивают тем, что полагались на несколько преданных полностью занятых администраторов базы данных, чтобы сделать это наряду с их другим обслуживанием, оптимизацией, и т.д. обязанности.

0
ответ дан 2 December 2019 в 06:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: