2010-04-27 2 views
2

Я знаю, что могу скопировать весь мой код MySQL вручную в файлы, а затем поместить эти файлы в исходный элемент управления. Но есть ли способ сделать это автоматически?Как поместить код MySQL в исходный элемент управления?

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

ответ

3

основе Михал ответ, решение я использую до сих пор:

#!/bin/bash 
BACKUP_PATH=/root/database_name 
DATABASE=database_name 
PASSWORD=Password 
rm -f "$BACKUP_PATH/*.sql" 
mysqldump -p$PASSWORD --routines --skip-dump-date --no-create-info --no-data --skip-opt $DATABASE > $BACKUP_PATH/$DATABASE.sql 
mysqldump -p$PASSWORD --tab=$BACKUP_PATH --skip-dump-date --no-data --skip-opt $DATABASE 
hg commit -Am "automatic commit" $BACKUP_PATH 
4

Вы можете создать триггеры при изменении данных, которые автоматически сохранили бы изменение в каком-либо источнике управления. Однако нет автоматического способа отслеживать изменения структуры (таблицы, хранимые процедуры и т. Д.) Таким образом. Поэтому, вероятно, наилучшим способом является сброс базы данных и сохранение этих дампов в контроле источника. Вы можете делать это периодически, чтобы автоматизировать все.

+0

Я не знаю, если вы меня поняли. Я говорю только о коде MySQL, а не о данных. Дамп базы данных также экспортирует сценарии, которые я хочу, поэтому я думаю, что это может сработать, если я найду способ экспортировать только скрипты. –

+2

Итак, вы хотите экспортировать только хранимые процедуры/триггеры? Тогда 'mysqldump --routines --no-create-info --no-data --no-create-db --skip-opt DATABASE' - это правильная команда для вас. –

+0

Я использую ваше решение. благодаря –

1

Не очень понимаю, что you'r пытается сделать.

Liquibase Посмотрите, возможно, он будет делать то, что вам нужно ...