(Azure) MySQL:MySQL 服务器已经消失
Posted
技术标签:
【中文标题】(Azure) MySQL:MySQL 服务器已经消失【英文标题】:(Azure) MySQL: MySQL Server Has Gone Away 【发布时间】:2017-01-21 19:51:24 【问题描述】:在guide on Azure,configuring the firewall settings 之后,我仍然无法访问我的 mysql 数据库。即使 IP 地址被列入白名单,我也会从所有服务器获得以下信息:
php 警告:PDO::__construct(): MySQL server has gone away in C:\Users\admin\app\dbtest.php 第 3 行 PHP 警告:PDO::__construct():读取问候包时出错。 PID=11692 in C:\Users\admin\app\dbtest.php 上线 3
警告:PDO::__construct(): MySQL 服务器已在 C:\Users\admin\app\dbtest.php 在第 3 行
警告:PDO::__construct():读取问候包时出错。 PID=11692 in C:\Users\admin\app\dbtest.php 上线 3 连接到 SQL Server.PDOException 对象时出错( [message:protected] => SQLSTATE[HY000] [2006] MySQL 服务器已消失 [字符串:异常:私人] => [代码:受保护] => 2006 [文件:受保护] => C:\Users\admin\app\dbtest.php [行:受保护] => 3 [trace:Exception:private] => 数组 ( [0] => 数组 ( [文件] => C:\Users\admin\app\dbtest.php [行] => 3 [函数] => __构造 [类] => PDO [类型] => -> [参数] => 数组 ( [0] => mysql:dbname=mydb;host=app.database.windows.net;port=1433 2 => 管理员 2 => 通过 ) ) ) [上一个:例外:私人] => [errorInfo] => ) 1 进程以退出代码 0 结束
这是我要连接的 PHP 脚本:
<?php
try
$conn = new PDO("mysql:dbname=db;host=app.database.windows.net;port=1433", "admin", "pass");
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
catch (PDOException $e)
print("Error connecting to SQL Server.");
die(print_r($e));
在不超时的情况下连接到 Azure MySQL 数据库需要哪些常规连接设置?
【问题讨论】:
【参考方案1】:app.database.windows.net;port=1433
格式的数据库端点是提供 SQL Server 服务的 Azure SQL 的端点。不是 MySQL。请尝试在https://www.microsoft.com/en-us/download/details.aspx?id=20098 安装适用于 Windows 的 SQL Server 驱动程序。然后尝试使用new PDO( "sqlsrv:server=$serverName ; Database=AdventureWorks", "user", "pass");
连接Azure SQL。
如果你想在 Azure 上使用 MySQL BaaS,详细步骤可以参考https://azure.microsoft.com/en-us/documentation/articles/store-php-create-mysql-database/。
如有任何疑问,请随时告诉我。
【讨论】:
以上是关于(Azure) MySQL:MySQL 服务器已经消失的主要内容,如果未能解决你的问题,请参考以下文章
Azure MySQL数据库错误客户端和服务器无法通信,因为它们没有通用算法
将 Xamarin 应用注册页面连接到 MySQL 的 Azure 数据库