Подтвердить что ты не робот

Контроль версий MySQL - Subversion

Удивление, возможно ли иметь контроль версий базы данных MySQL.

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

Проблема в том, что каждый разработчик имеет apache/MySQL/PHP на своих компьютерах, к которым они иногда редактируют базу данных. Его довольно неудобно, если они должны отправить электронное письмо всем остальным разработчикам, а затем вручную отредактировать базу данных тестовых серверов.

Как вы справляетесь с этой проблемой?

Спасибо

4b9b3361

Ответ 1

Это не само по себе решение, связанное с MySQL, но у нас был большой успех с продуктом под названием Liquibase. (http://www.liquibase.org/)

Это решение для миграции, которое охватывает множество разных поставщиков баз данных, позволяя кодировать все изменения базы данных в файлах конфигурации, все из которых хранятся в Subversion. Поскольку вся конфигурация хранится в файлах XML, легко слить другие изменения в mainline script, и она хорошо работает с тегами и ветвями.

База данных может быть доведена до текущего уровня версии, запустив команду "update database". Большинство изменений также имеют возможность отката изменения базы данных, что также может быть полезно. Я бы порекомендовал следовать практике, чтобы убедиться, что вы выполняете текущую работу перед запуском миграции, поскольку это, вероятно, будет проще всего.

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

До сих пор это работало как шарм.

Ответ 2

Ну, мы используем Rails, который сохраняет все изменения в файлах миграции. Я знаю, что пара фреймворков PHP делает то же самое - например, Symphony. Поэтому, когда все изменения объединены в нашем репозитории (мы пользовательские мерки), мы можем увидеть все изменения в миграциях, которые необходимы или были применены к базе данных в процессе разработки. Затем лицо, ответственное за производство, выдает код для производства после создания полной резервной копии. Однако, если вы не используете фреймворк PHP, который позаботится об этом, но это очень интересное предложение, я не слышал о жидкой базе раньше, но я обязательно проверю это.

Ответ 3

Существует инструмент iBatis, который теперь называется MyBatis, который отлично справляется с версиями баз данных.

Требуется небольшая работа, чтобы все ваши изменения в script вместо графического инструмента, но, если вы знакомы с кодированием, это не проблема.

Когда у вас есть несколько баз данных (например, dev-test-prod), вы просто делаете 3 файла окружения, и вы можете обновить одну среду только с одной инструкцией в командной строке.