Php 如何将mySQL数据库从本地服务器移动到Heroku?

Php 如何将mySQL数据库从本地服务器移动到Heroku?,php,mysql,heroku,phpmyadmin,Php,Mysql,Heroku,Phpmyadmin,我用phpMyAdmin创建了一个mySQL数据库。在这个数据库中,我存储了我朋友的姓名和位置(以及作为数据库主键的id)。我编写并运行以下php脚本从数据库中检索这些数据,并将它们投影到本地web服务器(XAMPP)上: 现在我想从我的另一台计算机上访问这个数据库,在那里我需要它们在前端进行一些很酷的数据可视化 一种方法是在另一台计算机上再次构建phpMyAdmin(和XAMPP),并向该数据库添加新用户 我选择的另一种方法是将mySQL数据库从本地服务器移动到Heroku 如何一步一步地

我用phpMyAdmin创建了一个mySQL数据库。在这个数据库中,我存储了我朋友的姓名和位置(以及作为数据库主键的id)。我编写并运行以下php脚本从数据库中检索这些数据,并将它们投影到本地web服务器(XAMPP)上:


现在我想从我的另一台计算机上访问这个数据库,在那里我需要它们在前端进行一些很酷的数据可视化

一种方法是在另一台计算机上再次构建phpMyAdmin(和XAMPP),并向该数据库添加新用户

我选择的另一种方法是将mySQL数据库从本地服务器移动到Heroku

如何一步一步地(通过使用ClearDB)轻松做到这一点


我是否可以将本地服务器同步到Heroku,以便在本地服务器上更改数据库时,Heroku会自动更新?

您有多个选项,具体取决于您对数据库服务器的访问权限等

假设您仍想在heroku上使用mysql,您可以轻松地执行以下操作:

  • 使用phpmyadmin导出所需的所有数据库/表,并将它们重新导入heroku数据库。我不熟悉heroku,但我猜他们提供了某种web数据库管理

  • 您可以使用从一台服务器到另一台服务器的一次性/永久性mysql复制。关于如何设置,有多个选项(master-master、master->slave等)。以下是有关如何设置主->从复制的快速教程:


有更多的选项,但这是我想到的。

另一个选项是使用为迁移数据库而设计的工具。这将允许您在必要时将数据库和内容分发到多个实例,而无需复制不需要的数据。例如,如果您的本地数据库中有不希望复制的测试数据,但确实希望复制表更改,那么这将是一个更好的解决方案。如果您计划将来分发应用程序,这是一个更好的解决方案

我认为一个更常见的解决方案是Phinx这里有一个链接到他们的页面

编辑:

这到底给了你什么?它将使您为对数据库所做的所有更改创建一个迁移文件,例如,如果您添加一个表或更改列名/大小/类型等,您将添加一个新的迁移文件。该文件可以有change或up和down方法,用于将数据库迁移到新版本或回滚。你可以有插入和其他东西,所以如果你想移动数据,你可以使用它。您要做的是创建迁移文件。然后将这些复制到服务器并运行迁移。它将更改数据库模式和数据,以匹配您的数据库模式和数据。是自动的吗?不需要,但它能让您从一个heroku实例迁移到另一个实例,而无需再次设置复制等。您可以设置数据库名称,然后重新运行迁移,它将插入/创建您的数据库。基本上,唯一的缺点是更改不会立即更改heroku实例,您需要上传文件更改和迁移并运行迁移

下面是关于phinx的一个很好的概述

这样做的好处:

  • 只要运行一个脚本,就可以在任何地方设置数据库
  • 可以对数据库进行版本控制,以便可以前滚或后滚到新版本或旧版本
  • 未绑定到特定实例/需求上的数据库
  • 无需对复制服务器进行所有设置或维护

phpMyAdmin不是一个数据库,它是一个查看MySQL数据库的工具。您正在将hoster与数据库管理工具进行比较。你希望如何得到这样的答案。有什么问题?创建该数据库的转储?还是在Heroku进口?或者正在访问Heroku服务器…好的,我编辑了我的帖子,我认为现在它更有意义了(?)。是的,现在Google搜索@ceejayoz更容易了(尽管我已经找到了其中的一些链接)。为了非常清楚,如果你们不介意的话,我想简单回答我的第二个问题。我可以以某种方式将本地服务器同步到Heroku吗?或者每次从本地服务器手动将数据库更新到Heroku时我都必须进行更新?您首先需要澄清“Heroku”是什么意思。除了通过第三方服务,他们不提供MySQL。他们的主要数据库产品是PostgreSQL。他们的一些MySQL供应商可能允许您设置复制,但我认为您最好将数据迁移作为部署过程的一部分来处理。感谢您的回复(upvote)。是的,我心里显然有第一个选择。然而,我在想,如果我可以将我的本地服务器同步到Heroku,那么每当我在本地服务器上更改某些内容时,Heroku就会自动更新。这是可能的,还是我每次都必须手动执行(或者我必须直接在Heroku数据库上执行)?第二个选项可以执行此操作,但只有在您拥有创建mysql复制的正确服务器权限的情况下才能执行。您需要查看您是否拥有服务器上的必要权限,以及heroku是否支持它!好的,明白了。因此,本质上,我将手动将我的SQL数据库从一台计算机的本地服务器移动到Heroku,然后通过对Heroku进行webhook或API调用,从另一台计算机(它有我的javascript前端)访问它?感谢您的回复(upvote)。这是一个非常有趣的答案。然而,我并不完全清楚(也许你可以编辑一下)。具体来说,使用这样的工具有什么好处?这是否与我的第二个问题有关(“我能否将本地服务器同步到Heroku,以便在本地服务器上更改数据库时,Heroku会自动更新?”)如果我理解正确,我将更新答案。我
<?php

$dbServername = 'localhost';
$dbUsername = 'root';
$dbPassword = '';
$dbName = 'Friends';

$conn = mysqli_connect($dbServername, $dbUsername, $dbPassword, $dbName);

$sql = 'SELECT * FROM friends;';
$result = mysqli_query($conn, $sql);
$resultCheck = mysqli_num_rows($result);


if ($resultCheck > 0) {
    while ($row = mysqli_fetch_assoc($result)) {
        echo $row['id'], ' ', $row['name'], ' ', $row['location']. '<br>';

    }
}

?>