Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何合并本地和实时数据库?_Php_Mysql_Wordpress - Fatal编程技术网

Php 如何合并本地和实时数据库?

Php 如何合并本地和实时数据库?,php,mysql,wordpress,Php,Mysql,Wordpress,我们已经为Wordpress开发了好几年,虽然我们的工作流程在几点上都得到了升级,但有一件事我们从未解决过。。。将本地Wordpress数据库与实时数据库合并 所以,我说的是有一个本地版本的网站,其中的文件和数据发生了变化,而现场网站上的数据也在同时发生变化 我所能找到的是一个完美的世界场景:把站点拉下来,没有人(甚至是客户)接触到现场站点,然后把本地站点推回去。也就是说,把一件东西复制到另一件上面 如果不运行一大堆mysql命令,如何做到这一点?(如果没有正确检查,他们可能会摔倒!)这可以通过

我们已经为Wordpress开发了好几年,虽然我们的工作流程在几点上都得到了升级,但有一件事我们从未解决过。。。将本地Wordpress数据库与实时数据库合并

所以,我说的是有一个本地版本的网站,其中的文件和数据发生了变化,而现场网站上的数据也在同时发生变化

我所能找到的是一个完美的世界场景:把站点拉下来,没有人(甚至是客户)接触到现场站点,然后把本地站点推回去。也就是说,把一件东西复制到另一件上面

如果不运行一大堆mysql命令,如何做到这一点?(如果没有正确检查,他们可能会摔倒!)这可以通过Gulp(我已经提到过)或插件来实现吗

说得清楚一点,我不是说通过类似的方式或类似的方式来来回推拉数据-这是一种合并,不是用一个数据库替换另一个数据库。

我很想知道其他开发者是如何解决这个问题的

文件更改非常简单,只有在发生数据更改时才会引起噩梦


进行合并,但您不能在本地工作,它会从您应该使用的活动站点创建一个临时站点。合并非常有效,但无法在本地工作是致命的打击

开发人员也告诉我,他们会做我想做的事情,但没有发布日期

重要提示:在将本地数据合并到实时数据库之前对其进行备份

遵循这些步骤可能有助于迁移大部分数据并将其合并到live

  • 转到本地站点的wp后端工具->导出
  • 选择所有内容单选按钮(如果默认未选中)
  • 这将带来一个包含所有本地数据的Xml文件,该数据由所有默认帖子类型和自定义帖子类型组成
  • 在记事本++或任何编辑器中打开此XML文件,查找本地URL并将其替换为实时URL
  • 现在访问实时站点并在工具->导入下导入XML
  • 手动上载文件(图像)
  • 这将使很大一部分来自本地的数据生效

    其余的数据您将不得不编写自定义脚本

    风险因素包括:

  • 将图像从本地上传到Live时,相同名称的图像 将被覆盖
  • Wordpress将图像保存在post_meta中,生成图像的序列化数据,而不是上载数据库时应注意的问题
  • post_meta for
    post_type=“attachment”
    中的序列化数据保存图像三维或四维的序列化数据
  • 导入数据时,用户的用户名或电子邮件ID可以相同(或wp执行检查唯一用户名和电子邮件的功能),则不会导入这些用户(可能)
  • 如果不运行一大堆mysql命令,如何做到这一点


    不可能。如果本地和网站同时运行,如何防止不同内容的ID不相同?

    听起来VersionPress可能会满足您的需要:


    有几个警告:我没有使用过它,所以不能保证它的有效性;它目前处于早期访问阶段。

    因此,如果您想这样做,可以使用mysql Repatition。我认为它将帮助您与不同的数据库mysql进行合并。

    如果我了解您的情况,合并本地和实时数据库,直到现在我正在使用其他软件,如
    NavicatPremium
    ,它具有数据同步功能。

    这可以通过使用SpringXD实时实现,创建JDBC流从一个数据库中提取数据并插入到另一个数据库中。(这就像流媒体一样,所以你不必打扰任何环境)

    如果我是你,我会做以下几件事(速度慢,但给你最大的成功机会)

    首先,在某处建立第三个数据库。云服务可能是理想的选择,因为您可以在几个小时内获得一台功能强大的带有SSD的服务器。你需要那种马力

    其次,我们将
    mysqldump
    第一个数据库,并将输出导入我们的云数据库

    mysqldump -u user -ppassword dbname | mysql -u root -ppass -h somecloud.db.internet
    
    现在我们有了DB#1的完整副本。如果您的云支持快照数据,请确保现在就使用快照数据

    最后一步是编写一个PHP脚本,缓慢但肯定地从第二个DB中选择数据并将其写入第三个DB。我们想一次录制一张唱片。为什么?嗯,我们需要维护记录之间的关系。因此,让我们发表评论和帖子。当我们从DB#2中提取post#1时,它将无法保留记录#1,因为DB#1已经有一个。所以现在post#1变成post#132。这意味着,现在需要将post#1的所有评论都写为属于post#132。您还必须为发布这些帖子的用户提取记录,因为他们的用户ID也会更改


    这个问题没有简单的解决方法,但是WP结构并不十分复杂。构建一个简单的循环来提取数据并转换数据不应该超过几个小时的工作时间。

    您需要做的第一件事是评估是否更容易执行复制粘贴数据输入而不是迁移脚本。有时,最好的解决办法是接受它,并使用CMS接口手动执行。这避免了与合并主键的任何潜在冲突,但您可能需要注意诸如帖子或类似数据的创建者之类的引用

    如果手动迁移的工作量太大,那么您将不得不编写脚本或查找已经为您编写的脚本。假设外面什么都没有,下面是你要做的

    始终在运行迁移之前进行备份

    1) 列出你需要转移的内容。您是否需要用户、帖子等。?找到数据库表并将其添加到列表中

    2) 在数据库中尽可能地做一个记录