Поместить базу данных MySQL под контроль версий?

В настоящее время я использую SVN для своих проектов PHP. Я думал, что должен также получить свою базу данных под управлением версии, но какой лучший способ сделать это? Я просто создаю db-папку в своем проекте в SVN, вставляю SQL-изменения в файл from_1.0_to_2.0.sql и фиксирую?

Ответ 1

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

Обратите внимание, что если вы хотите двунаправленное управление версиями db (чтобы вы могли вернуться к предыдущей версии db), вам также нужно записать необходимые запросы для каждой версии.

Есть также некоторые инструменты, которые могут помочь вам в написании миграций, таких как MySQLdiff

Ответ 2

Обратите внимание, что в последнее время (декабрь 2012 г.) у вас есть еще один вариант: DBV (версия базы данных)

Он основан на этом проекте Github и представляет собой веб-приложение для управления версиями базы данных, включающее управление схемой, скрипты ревизий и т.д.

database schema

Ответ 3

Отъезд

Liquibase

http://www.liquibase.org/quickstart

Идея такова:

Все изменения в базе данных хранятся в общедоступной, но доступной форме и проверяются в исходное управление. - Liquibase.org главная страница

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

Ответ 4

Вы можете использовать инструмент MySQL Workbench.

Файл, созданный с помощью инструмента моделирования, может быть сохранен в SVN. Инструмент позволяет синхронизировать вашу базу данных с моделью в двухстороннем порядке.

Ответ 5

Миграции в Laravel - PHP-инфраструктура кажется очень полезной, но есть одна большая НО. Существует только онлайн-инструмент для обозначения схемы в ларавом языке ORM, называемом "красноречивым" (здесь). Таким образом, он по-прежнему непригоден, если вам нужно разработать и поддерживать базу данных какого-либо серьезного проекта.

Ответ 6

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