gpt4 book ai didi

php - mysqldump-git hook-它允许什么?

转载 作者:行者123 更新时间:2023-11-30 23:38:26 24 4
gpt4 key购买 nike

在mkb用户帮助下,我已经构建了此预提交挂钩:

#!/bin/bash -e

DBHOST=dbhost.yourdomain.com
DBUSER=dbuser
DBPASS=dbpass
DBNAME=dbname

mysqldump -h $DBHOST -u $DBUSER -p $DBPASS -d $DBNAME > sql-version-control/schema.sql
# the -h means host.
# the -u means user.
# the -p means pass.
# the -d means database name (same as "no data").
git add sql-version-control/schema.sql


据我了解:

mysqldump -h $DBHOST -u $DBUSER -p $DBPASS -d $DBNAME > sql-version-control/schema.sql


将转到我的共享(或本地)主机,并在那里备份常规模式吗?

但是,很多时候,我们在本地更改架构,然后需要在远程服务器上应用这些更改。

无论如何,我可以沿着这条路做吗?
还是有一种更好的方法来完成预期的工作?

提前致谢

最佳答案

提供新的变更集时,将此作为您的预提交挂钩将数据库自动备份到Git:https://gist.github.com/wilcollins/dfa33ef20caf6dab5826

由于数据库模式更改通常与回购更改结合在一起以支持数据库更改,因此该系统尽可能使远程和本地环境保持同步。

#!/bin/bash -e
# -e means exit if any command fails
DBHOST=address.to.your.server
DBUSER=username
DBPASS=password # do this in a more secure fashion
DBNAME=DBNAME
GITREPO=/where/is/your/repo
DUMP=$GITREPO/where/you/store/dumps
NEW=$DUMP/schema.sql
OLD=$NEW.old

DIR=$(pwd)
cd $GITREPO

mv $NEW $OLD

mysqldump -h $DBHOST -u $DBUSER -p$DBPASS $DBNAME --skip-dump-date --single-transaction > $NEW

# NOTE : the new schema.sql file & location need to be added to your GIT repo & ignore .old

if cmp -s $OLD $NEW; then
echo Same
else
echo Differ
git commit $NEW -m "$DBNAME DB update"
echo "schema+data committed"

git push # assuming you have a remote to push to
echo "schema+data pushed"
fi
cd $DIR


那么您可以在提取仓库更改时导入新的 schema.sql

关于php - mysqldump-git hook-它允许什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5525360/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com