我一直在摆弄 Flash Builder(beta 2)并尝试连接一些 PHP 服务。假设没有问题,通过 FB 进行连接非常简单。但我已经好几天都遇到问题了。
我在 WinXPSP2 上运行最新的 WAMP 安装,其中只进行了下面提到的一项修改(全新安装)。
总而言之,我设置了一个非常简单的数据库表,主键 + 4 个其他字段。我设置了一个示例 PHP 服务来与 MySQL 通信并接收表行数据。但是,无论我尝试通过 FB 连接,还是仅运行使用相同 PHP 服务的 test.php,我都会从 MySQL 收到以下错误:
**Warning: mysqli_connect() [function.mysqli-connect]: MySQL server has gone away in C:\wamp\www\PHPService\services\EmployeeService.php on line 33
Warning: mysqli_connect() [function.mysqli-connect]: Error while reading greeting packet. PID=1024 in C:\wamp\www\PHPService\services\EmployeeService.php on line 33
Warning: mysqli_connect() [function.mysqli-connect]: (HY000/2006): MySQL server has gone away in C:\wamp\www\PHPService\services\EmployeeService.php on line 33
Fatal error: Maximum execution time of 60 seconds exceeded in C:\wamp\www\PHPService\services\EmployeeService.php on line 27**
根据 Adobe FB 论坛的建议,我尝试将 php.ini 中的默认“max_execution_time = 30 ;”按顺序增加到 120、240 和 360。但无济于事。
这个网址:http://www.codefinger.co.nz/_etc/mySQLError.zip 包含;
- 我正在使用的 MySQL 数据库表
- EmployeeService.php 如上所示出现错误
- test.php,与 EmployeeService.php 位于同一文件夹中
任何帮助都值得感激,我不是 MySQL 或 PHP 高手,所提供的所有内容均取自 Adobe 的在线示例材料,我所做的就是输入我自己的数据库详细信息和“EmployeeService.php”的更改版本以反映我尝试从 MySQL 获取的数据。
如果您愿意提供帮助而我又没有提供一些重要的日志或其他内容,请告诉我,也许我可以在哪里找到您需要排除故障的信息。
干杯,- danjah
[编辑] 我应该注意,在“EmployeeService.php”中,你会看到我注释掉了用户名/密码设置,只是为了测试这是否有问题,不过我已经用正确的凭据尝试过了(注释的凭据)。我在测试时还暂时关闭了防火墙,耸肩。
答案1
问题在于连接到您的 MySQL 服务器。您可以通过 phpMyAdmin 进行连接,对吗?因此 MySQL 本身似乎已正确连接。
查看您的代码,这看起来非常可疑:
var $server = "localhost";
var $port = "80";
端口 3306 是默认的 MySQL 端口,但您可能已将其配置为在其他端口上运行,我不知道。但在端口 80 上运行 MySQL 会非常愚蠢,因为这是 HTTP 的端口。我假设您有一个 Web 服务器 (Apache) 在该端口上运行,因为您提到了 WAMP。除非您将 Apache 更改为在其他端口上运行,否则会更奇怪。
答案2
经过多次调试和反复试验后,我发现罪魁祸首是在连接 MySQL 数据库时包含的“端口号”。
通过删除端口 arg,一切正常。
端口参数显然是有原因的,所以不要一无所知,谁能告诉我为什么端口号(值为 80)会导致这些错误? PHPinfo 告诉我端口 80 正在被监听,我甚至在防火墙关闭的情况下也尝试过。
答案3
端口 80 是 http,端口 3306(默认)是 MySQL 监听的端口,如果您告诉 php 连接到端口 80 上的 mysql 服务器,那么这就可以解释为什么您无法连接。删除端口参数并让其使用默认端口可以解释为什么它可以工作。