为 CakePHP Web 应用程序将 phpMyAdmin 数据库迁移到 Windows Azure

Posted

技术标签:

【中文标题】为 CakePHP Web 应用程序将 phpMyAdmin 数据库迁移到 Windows Azure【英文标题】:Migrating phpMyAdmin database to Windows Azure for CakePHP web application 【发布时间】:2013-01-27 03:51:39 【问题描述】:

我的问题非常具体,我在网上找不到答案。我一直在本地构建一个 Cakephp Web 应用程序,并使用 XAMPP 使用 phpMyAdmin 在 Apache 服务器上本地托管它。现在我正在尝试将站点迁移到 Windows Azure,并且数据库导入被证明是有问题的。

我在 Azure 中创建了一个新网站,并将我的网站根文件夹放在指定的目录中。我发布了该站点,并且能够查看该站点并出现预期的“缺少数据库”错误。

然后我将 phpMyAdmin 中的所有表导出到 .sql 文件(有些托管在另一台服务器上,因此我无法导出整个数据库),现在我遇到了问题。我用谷歌搜索了如何广泛导入 .sql 文件,但只能找到如何从 SQL Server 导入。我在 Microsoft 网站上看到一篇文章:

http://blogs.iis.net/ruslany/archive/2012/12/17/phpmyadmin-on-windows-azure-web-sites.aspx

我按照步骤操作,但在最后阶段无法登录。但是,这种方法似乎有点矫枉过正,肯定有一种简单的方法可以将标准 mysql 数据库这样基础的东西导入 Azure 吗?

【问题讨论】:

【参考方案1】:

有一个更简单的方法;在进入细节之前总结一下:您可以从本地 phpmyadmin 访问您的远程 azure MySQL 数据库并使用导入、导出 - 您习惯在 phpmyadmin 上使用的所有功能。

我所说的方法的基础可以在这里找到: http://ruslany.net/2012/12/phpmyadmin-on-windows-azure-web-sites/ 这种方法允许您在您的 azure 网站上安装 phpmyadmin,以便您可以通过类似 www.yoursitename.net/phpmyadmin 的方式访问它

但是,比这更好的方法是直接从现有的本地 phpmyadmin 访问远程 (Azure) mysql 数据库 - 看到您正在使用 xampp。为此,请在您的 xampp/phpmyadmin 文件夹中查找 config.inc.php 并在文件末尾添加以下行:

$i++;
$cfg['Servers'][$i]['host'] = "[look for data source in mysqldbconnectionstring - see in your azure dashboard publish settings]";
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['compress'] = 'false';
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['AllowNoPassord'] = false;
所以只更改主机值 - 参见上面 [] 中的说明。保存文件。

当您从 localhost 打开 phpmyadmin 时,您会看到“服务器选择”现在是一个下拉菜单 - 您知道该怎么做!

【讨论】:

但是从本地到远程,由于连接不是直接的,速度会慢一些 这与您在远程服务器上所做的任何工作相同。我们无法通过远程服务器获得与本地主机相同的速度。我发现这种方法有用的原因是您可以从用于本地测试开发的同一环境中执行远程数据库操作。 我在尝试登录时遇到 SSL 错误...您知道如何解决这个问题吗?【参考方案2】:

你可以通过命令行来完成。读这个: http://www.windowsazure.com/en-us/develop/php/tutorials/website-w-mysql-and-git/

注意标题为“获取远程 MySQL 连接信息”的部分。在 Azure 上创建 mysql 数据库后,从 mysql 连接到它:

mysql -hData Source] -u[User Id] -p[Password] -D[Database]

从这里,您可以从您创建的 sql 文件中复制 create table 语句和 insert 语句。或者,如果您可以导航到 .sql 文件,您可以执行以下操作:

mysql>\. data.sql

这将执行 sql 文件中的所有命令。

【讨论】:

我确定这可行,但由于我没有那么多表,而且我不太擅长 SQL 或 Azure,我最终手动制作了表。

以上是关于为 CakePHP Web 应用程序将 phpMyAdmin 数据库迁移到 Windows Azure的主要内容,如果未能解决你的问题,请参考以下文章

CakePHP - 如何在保存时将关联记录添加到模型中?

php [cakephp:UserstampBehavior]在保存之前将用户的id创建/修改为实体的模型行为。 #cakephp

致命错误:C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\modules\phpmy 中的最大执行时间超过 30 秒

CakePHP 3 - 使用多个数据库连接*不使用ORM *

Objective C - 使用 AFNetworking 2.x 库将参数传递给 webservice (cakephp)

CakePHP,将模型的递归设置为-1,这样它就不会“加入”?