如何包括在GitHub上的MySQL数据库架构?(How to include MySQL data

2019-09-01 10:03发布

计算器和MySQL,通过命令行的n00b这里,请温柔! 我一直在四处寻找答案,我的问题,但只能找到对付GitHubbing MySQL的转储(如:数据转储)主题通过GitHub上,这两者都不告诉我我想知道的协作或MySQL“版本控制”:

一个怎样包括与在GitHub上的PHP项目表的MySQL数据库架构/信息?

我想分享在GitHub上一个PHP项目依赖于一个MySQL数据库与某些表的存在。 如果有人想复制/利用这个项目,他们将需要有这些特定的表到位,使脚本工作(所有表,但一个是在一开始空,只能由用户随着时间的推移得到填补,通过脚本;所述非空表从一开始就保持三个值)。 如何去这件事, 什么是常见的做法

  • 我只想得到一个(完整)转储我自己的数据库/表文件,然后删除所有数据部分(除了一个非空表),将所有自动递增为零,然后上传.sql文件到GitHub上随该项目的其余部分? 要么
  • 它是最好的/更好的做法写(PHP)脚本与该(也许不那么有经验的)用户可以在无需使用mysqldump /命令行魔法创建这些表?

如果解决方案#1是要走的路,我会包括关于如何使用这样的.sql文件进一步的说明?

很抱歉,如果我的问题听起来很傻,但正如我上面说的,我自己是新来使用的MySQL相关的东西的命令行,并只使用过的phpMyAdmin的,直到昨天(当我创建使用mysqldump我的第一个转储文件 - !耶) 。

Answer 1:

通常的做法是,包括创建必要的表,这样的解决方案#2是要走的路的安装脚本。

[编辑]该脚本可以OFC只是重播转储。 ;)

您可能也有兴趣迁移: 如何自动为PHP / MySQL的应用程序迁移(架构和数据)



Answer 2:

如果你想同时跟踪数据库架构更改

还可以使用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查询和开发人员可以很容易跟踪数据库的变化。



文章来源: How to include MySQL database schema on GitHub?