计算器和MySQL,通过命令行的n00b这里,请温柔! 我一直在四处寻找答案,我的问题,但只能找到对付GitHubbing MySQL的转储(如:数据转储)主题通过GitHub上,这两者都不告诉我我想知道的协作或MySQL“版本控制”:
一个怎样包括与在GitHub上的PHP项目表的MySQL数据库架构/信息?
我想分享在GitHub上一个PHP项目依赖于一个MySQL数据库与某些表的存在。 如果有人想复制/利用这个项目,他们将需要有这些特定的表到位,使脚本工作(所有表,但一个是在一开始空,只能由用户随着时间的推移得到填补,通过脚本;所述非空表从一开始就保持三个值)。 如何去这件事, 什么是常见的做法 ?
- 我只想得到一个(完整)转储我自己的数据库/表文件,然后删除所有数据部分(除了一个非空表),将所有自动递增为零,然后上传.sql文件到GitHub上随该项目的其余部分? 要么
- 它是最好的/更好的做法写(PHP)脚本与该(也许不那么有经验的)用户可以在无需使用mysqldump /命令行魔法创建这些表?
如果解决方案#1是要走的路,我会包括关于如何使用这样的.sql文件进一步的说明?
很抱歉,如果我的问题听起来很傻,但正如我上面说的,我自己是新来使用的MySQL相关的东西的命令行,并只使用过的phpMyAdmin的,直到昨天(当我创建使用mysqldump我的第一个转储文件 - !耶) 。
通常的做法是,包括创建必要的表,这样的解决方案#2是要走的路的安装脚本。
[编辑]该脚本可以OFC只是重播转储。 ;)
您可能也有兴趣迁移: 如何自动为PHP / MySQL的应用程序迁移(架构和数据)
如果你想同时跟踪数据库架构更改
还可以使用Git挂钩。
在目录[your_project_dir]/.git/hooks
添加/编辑脚本pre-commit
#!/bin/sh -e
set -o errexit
# -- you can omit next line if not using version table
version=`git log --tags --no-walk --pretty="format:%d" | sed 1q | sed 's/[()]//g' | sed s/,[^,]*$// | sed 's ...... '`
BASEDIR=$(dirname "$0")
# -- set directorey wher schema dump is placed
dumpfile=`realpath "$BASEDIR/../../install/database.sql"`
echo "Dumping database to file: $dumpfile"
# -- dump database schema
mysqldump -u[user] -p[password] --port=[port] [database-name] --protocol=TCP --no-data=true --skip-opt --skip-comments --routines | \
sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' > "$dumpfile"
# -- dump versions table and update core vorsiom according to last git tag
mysqldump -u[user] -p[password] --port=[port] [database-name] [versions-table-name] --protocol=TCP --no- data=false --skip-opt --skip-comments --no-create-info | \
sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | \
sed -e "/INSERT INTO \`versions\` VALUES ('core'/c\\INSERT INTO \`versions\` VALUES ('core','$version');" >> "$dumpfile"
git add "$dumpfile"
# --- Finished
exit 0
更改[user], [password], [port], [database-name], [versions-table-name]
此脚本由混帐每次提交autamatically执行。 如果commiting标签新版本由标签名称保存到表转储。 如果在数据库中没有变化,没有将提交。 确保如果脚本是可执行的:)你的安装脚本可以从这个转储采取的SQL查询和开发人员可以很容易跟踪数据库的变化。