使用Git跟踪mysql架构 - 一些问题

MEM*_*MEM 26 mysql git

如果这是推荐的?

我可以问一些关于如何跟踪mysql架构版本的git命令示例吗?

我们是否应该使用另一个存储库,而不是我们通常在应用程序根目录中使

我应该使用叫做钩子的东西吗?

更新:

1)我们导航到.git数据库所在的项目根目录.

2)我们创建一个名为hooks的子文件夹.

3)我们在这个名为db-commit的文件中放了这样的东西:

   #!/bin/sh
   mysqldump -u DBUSER -pDBPASSWORD  DATABASE --no-data=true> SQLVersionControl/vc.sql
   git add SQLVersionControl/vc.sql
   exit 0
Run Code Online (Sandbox Code Playgroud)

现在我们可以:

4) git commit -m

此提交将包括在提交之前运行的mysql架构转储.

上面的来源是:http: //edmondscommerce.github.io/git/using-git-to-track-db-schema-changes-with-git-hook.html

如果这是一种可以接受的方式,我可以请耐心的人逐行评论并尽可能详细地评论,这里发生了什么:

#!/bin/sh
mysqldump -u DBUSER -pDBPASSWORD  DATABASE --no-data=true> SQLVersionControl/vc.sql
git add SQLVersionControl/vc.sql
exit 0
Run Code Online (Sandbox Code Playgroud)

非常感谢.

mkb*_*mkb 23

假设您已经有一个git repo,请在shell脚本或其他任何内容中执行以下操作:

#!/bin/bash -e
# -e means exit if any command fails
DBHOST=dbhost.yourdomain.com
DBUSER=dbuser
DBPASS=dbpass # do this in a more secure fashion
DBNAME=dbname
GITREPO=/path/to/git/repo
cd $GITREPO
mysqldump -h $DBHOST -u $DBUSER -p$DBPASS -d $DBNAME > $GITREPO/schema.sql # the -d flag means "no data"
git add schema.sql
git commit -m "$DBNAME schema version $(`date`)"
git push # assuming you have a remote to push to
Run Code Online (Sandbox Code Playgroud)

然后每天从cron作业开始这个脚本或者你有什么.

编辑:通过在$ gitdir/hooks/pre -commit中放置一个脚本(名称很重要),脚本将在每次提交之前执行.这样,每次提交都会捕获数据库模式的状态,这是有道理的.如果你每次提交都自动运行这个sql脚本,你将会吹掉你的数据库,这是没有意义的.

#!/bin/sh
Run Code Online (Sandbox Code Playgroud)

该行指定它是一个shell脚本.

mysqldump -u DBUSER -pDBPASSWORD  DATABASE --no-data=true> SQLVersionControl/vc.sql
Run Code Online (Sandbox Code Playgroud)

这跟我上面的回答一样; 仅从数据库获取DDL并将其存储在文件中.

git add SQLVersionControl/vc.sql
Run Code Online (Sandbox Code Playgroud)

这会将SQL文件添加到对存储库进行的每次提交.

exit 0
Run Code Online (Sandbox Code Playgroud)

这会成功退出脚本.这可能很危险.如果mysqldumpgit add失败,你可能会吹走你想要保留的东西.


Chr*_*rle 9

如果您只是跟踪架构,请将所有CREATE语句放入一个.sql文件中,然后将该文件添加到git中.

$> mkdir myschema && cd myschema
$> git init
$> echo "CREATE TABLE ..." > schema.sql
$> git add schema.sql
$> git commit -m "Initial import"
Run Code Online (Sandbox Code Playgroud)