Использование SVN с базой данных MySQL под управлением xamp - да или нет? (и как?) - PullRequest
1 голос
/ 15 января 2010

Для моего текущего проекта PHP / MySQL (для группы из 4-5 членов команды) мы используем эту настройку: каждый разработчик кодирует и тестирует на своем локальном хосте xamp, и загружает его на тестовый сервер через SVN.

Один вопрос, который у меня сейчас есть, как синхронизировать базу данных MySQL? Возможно, я добавил в проект новую таблицу и ссылки на код PHP, поэтому другим членам моей команды потребуется доступ к этой таблице, чтобы мой код (как только они получили его через SVN) для работы.

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

  1. Установите тестовую БД в режиме онлайн, и все кодеры будут ссылаться на нее, даже при кодировании с локального хоста. Недостаток: вы не можете проверить, если у вас нет доступа в Интернет.

  2. Каким-то образом синхронизировать локальную копию базы данных MySQL. Это глупо? И если я считаю это, как мне это сделать? (какую папку мне добавить в SVN?)

(Я полагаю, что связанный с этим вопрос заключается в том, как автоматически обновлять действующую базу данных MySQL из тестируемой БД, независимо от того, находится ли она на удаленном сервере или размещена локально через xamp. Любые рекомендации по этому поводу приветствуются!)

1 Ответ

1 голос
/ 15 января 2010

Совершенно разумно поддерживать схему базы данных в системе контроля версий - фактически, большинство продуктов на основе баз данных делают именно это. Я понятия не имею, как устроен ваш репозиторий, но если у вас нет PHP-кода непосредственно под корнем, все будет в порядке. Если у вас есть PHP-код в корневом каталоге, я настоятельно рекомендую svn mv в его собственный каталог.

Хранение данных в системе контроля версий немного более проблематично. Если вам нужны эти данные для инициализации базы данных для использования, то, конечно, это имеет смысл. То же самое с данными испытаний. Если вы пытаетесь хранить живые данные, не так уж много (именно поэтому у вас есть база данных). Я не знаю, как MySQL управляет резервным копированием базы данных, но я предполагаю, что есть более компактный формат, чем длинный SQL-скрипт (например, Oracle как exp формат).


Чтобы привести пример из реальной жизни, вот подход, использованный продуктом, над которым я работал.

  • DDL для создания текущей схемы базы данных находился под контролем исходного кода и был частью выпуска.
  • SQL (DML) для вставки начальных значений в эту базу данных также находился под контролем исходного кода.
  • Для каждого выпуска существовал скрипт для обновления базы данных из предыдущего выпуска. Этот скрипт изменял / добавлял таблицы, а также вставлял / удалял строки.
  • Тестовые программы приняли «чистую» базу данных и отвечали за вставку собственных данных.
  • Поскольку это был продукт, любые данные после инициализации были добавлены заказчиком.

Я начал работать в компании, когда продукту исполнилось 5 лет, а ушел через 4 года. Я никогда не пробовал выпуск версии 1, но я знаю, что выпуск версии 2.x можно обновить до версии 4.0 (как правило, выпускаются точечные выпуски каждые 4 месяца).

...