遵循guide on Azure, configuring the firewall settings ,我仍然无法访问我的 MySQL 数据库。即使 IP 地址已列入白名单,我也会从所有服务器获取以下信息:
PHP Warning: PDO::__construct(): MySQL server has gone away in C:\Users\admin\app\dbtest.php on line 3 PHP Warning: PDO::__construct(): Error while reading greeting packet. PID=11692 in C:\Users\admin\app\dbtest.php on line 3
Warning: PDO::__construct(): MySQL server has gone away in C:\Users\admin\app\dbtest.php on line 3
Warning: PDO::__construct(): Error while reading greeting packet. PID=11692 in C:\Users\admin\app\dbtest.php on line 3 Error connecting to SQL Server.PDOException Object ( [message:protected] => SQLSTATE[HY000] [2006] MySQL server has gone away [string:Exception:private] => [code:protected] => 2006 [file:protected] => C:\Users\admin\app\dbtest.php [line:protected] => 3 [trace:Exception:private] => Array ( [0] => Array ( [file] => C:\Users\admin\app\dbtest.php [line] => 3 [function] => __construct [class] => PDO [type] => -> [args] => Array ( [0] => mysql:dbname=mydb;host=app.database.windows.net;port=1433 2 => admin 2 => pass ) ) ) [previous:Exception:private] => [errorInfo] => ) 1 Process finished with exit code 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 数据库而不发生连接超时需要哪些常规连接设置?
最佳答案
这种格式的数据库端点app.database.windows.net;port=1433
是提供SQL Server服务的Azure SQL的端点。不是MySQL。请尝试安装 Windows 版 SQL Server 驱动程序 https://www.microsoft.com/en-us/download/details.aspx?id=20098 。然后尝试使用 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/了解详细步骤。
如有任何进一步的疑问,请随时告诉我。
关于php - (Azure) MySQL : MySQL Server Has Gone Away,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39483113/