0

我正在开发一个 WordPress 网站,在我的笔记本电脑上进行开发,然后通过将 git 推送到服务器来部署更改。这对文件很有用,我想对数据库的内容更改做同样的事情。

我在解决问题的第一次迭代中使用 git hooksmysqldump在提交前使用转储数据库,然后在结帐后恢复转储。这有效,但每次都会删除并重新创建整个数据库。这是不行的,因为 WordPress 还会自动更改我想要保留的数据库,比如销售哪些产品的记录,所以我不希望在每次结账时都删除并恢复整个事情。

我认为更好的解决方案是在提交期间继续转储数据库,然后在签出时使用一个新工具,该工具读取输出git diff HEAD^并将其转换为输入到mysql. 这样,数据库将随着我的更改逐步修补,同时保留其他人(例如 WordPress)所做的更改。例子:

混帐差异:

 (83,NULL,550,'TI-99/4A','',0,0,0,0,'',0,0,0),
-(85,NULL,2000,'Banana Jr. 6000','',0,0,0,0,'',0,0,0),
+(85,NULL,2000,'Banana Jr. 6000 (now with tint control!)','',0,0,0,0,'',0,0,0),
 (88,NULL,150,'Symbolics 3645','',0,0,0,0,'',0,0,0),

转换为 SQL:

DELETE FROM `wp_yak_product` WHERE `post_id`='85';
INSERT INTO `wp_yak_product` VALUES (85,NULL,2000,'Banana Jr. 6000 (now with tint control!)','',0,0,0,0,'',0,0,0);

我四处寻找,找不到这样的东西。我正在考虑自己写。

这样的事情存在吗?这是个好主意还是坏主意?

4

2 回答 2

0

我想到了一种可能的方法:

我将数据库转储到每个表的不同文件中:

wp_commentmeta.sql
wp_comments.sql
wp_links.sql

等等

也许我可以将表格分为内容与簿记的类别,例如Unix中的usrvar目录之间的区别,并将簿记表添加到我的目录中,.gitignore这样当我更新内容时它们就不会被破坏。

于 2012-10-25T15:45:29.633 回答
0

据我所知,这种工具不存在。我所知道的产生类似输出的最佳选择是使用MySQL Workbench中的“同步模型”功能。

也就是说,我建议您在 SQL 文件中跟踪您在开发数据库中所做的更改,并检查到 git 中,该文件可以在您的生产服务器上执行。

于 2012-10-25T02:55:18.390 回答