Во времена интенсивной разработки схема базы данных меняется как быстро, так и непрерывно, и к тому времени, когда наш еженедельный толчок к бета-сборке приходит в себя, схема изменилась настолько, что единственным разумным вариантом является обнуление всех таблиц, которые я могу, и скопируйте новые версии из моей базы данных разработчиков. Очевидно, что это не сработает после того, как мы запустим, так как ядерные производственные данные - это путь к катастрофе, поэтому мне было интересно, какие существуют стратегии для управления изменениями схемы базы данных из одной версии / ревизии в другую?
Некоторые я нашел или испытал:
- Прямой нук-дамп из одной базы данных в другую (что я сейчас делаю)
- Поддержание файла UPDATE.sql с инструкциями SQL, которые запускаются либо скриптом, либо вручную.
- Сохранение файла update.php с соответствующим значением «db-schema-version» в активной базе данных
Третий вариант представляется наиболее разумным, но все еще существует вероятность того, что неправильно составленный SQL-запрос завершится неудачно в середине сценария, оставив базу данных в полуобновленном состоянии, что потребует восстановления резервной копии.
Это кажется не проблема, но это случается, так как мы как команда, мы используем phpMyAdmin, и я не могу даже полагаться на себя, помню, как скопировал выполненный оператор SQL для вставки в файл update.php. Как только вы перейдете на другую страницу, мне придется вручную переписать инструкцию SQL или отменить изменения и сделать это снова.
Полагаю, на что я надеюсь, так это на решение, которое не повлияет на наш установившийся рабочий процесс разработки?
update.php
илиupdate.sql
файл в тестовой среде, прежде чем применять его к активной базе данных, верно? И PHPMyAdmin обвиняют в возможных проблемах, таких как сценарии, может быть, пришло время заняться поиском другого / лучшего инструмента?