【问题标题】:Segmentation Fault When Using MySQL PDO使用 MySQL PDO 时出现分段错误
【发布时间】:2012-11-14 16:22:27
【问题描述】:

我刚刚开始在 Laravel 中开发一个新站点,但在连接到 MYSQL(版本 5.5.25a)数据库时遇到了问题。 mysql 服务器在同一个本地网络上,但在与 Web 服务器(OSX 服务器)不同的机器上。长期以来,这种设置在 Codeigniter、YII、直接 PHP 等中对我来说效果很好。

我已经使用我的数据库凭据设置了 Laravel 的 /config/database.php,但是只要它在使用 Laravel 的 PDO 数据库类建立数据库连接的页面上,站点就会超时。它给了我可怕的 chrome 中的 Error 324 (net::ERR_EMPTY_RESPONSE): The server closed the connection without sending any data. 错误。

如果我输入的凭据不正确(密码/用户名/数据库名错误),Laravel 会给我一个真实的 MYSQL 错误消息SQLSTATE[28000] [1045] Access denied for user...,所以它似乎可以与服务器正常通信。

如果我使用 mysqli 进行快速而肮脏的数据库调用并使用 chromePHP 记录结果,一切似乎都运行良好,并且它从数据库返回正确的行数,没有超时,没有问题。

$mysqli = new mysqli('192.168.1.178', 'username', 'password', 'dbname');

if ($mysqli->connect_error){
    die ("Connect error: " . $mysqli->connect_error );
}

if ($result = $mysqli->query("SELECT username FROM user LIMIT 10")) {
    ChromePhp::log($result->num_rows);
    /* free result set */
    $result->close();
}

更新

我检查了日志,没有从 mysql 得到任何信息,但是 apache 日志在超时时显示以下错误:

child pid 60418 exit signal Segmentation fault (11)

我还注意到 phpinfo() 显示 PDO 客户端 API 版本设置为 mysqlnd 5.0.7-dev - 091210 - $Revision: 300533 ,我想知道客户端版本和 MYSQL 服务器版本之间的这种不匹配是否会导致问题?


当我尝试将 PDO 与 mysql 一起使用时,为什么 php/mysql 会超时?

【问题讨论】:

  • 似乎我不是唯一一个遇到这个问题的人,它可能特定于我正在使用的苹果设置。 discussions.apple.com/thread/…
  • phpinfo()在web服务器上显示PDO Client API版本设置为mysqlnd 5.0.7-dev - 091210 - $Revision: 300533,不知道会不会有问题?

标签: php mysql pdo laravel


【解决方案1】:

我在试用 Laravel 4 测试版时遇到了这个错误。从命令行运行迁移时,我会看到 Segmentation fault: 11

原来,我的问题是安装了 MAMP 的副作用。 php MAMP 的版本只提供在浏览器中运行。开箱即用,OS X 带有它自己的 php 版本。这是当您在命令行中使用php 时 OS X 将运行的版本。

快速解决方法是将 MAMP php 目录添加到您的 .profile 或 .bash_profile 文件中。有一个更好的指南来说明如何做到这一点here

【讨论】:

    【解决方案2】:

    您有 2 个环境 CLI 和浏览器。两者都应该与您的 ip 或“localhost”一起使用,但根据我的经验,一个环境在 DB 配置中与您的 IP 一起使用,而另一种环境在 DB 配置中与“localhost”一起使用。

    【讨论】:

    • 我的网站在一个虚拟域上,所以我通过浏览器通过http://some-made-up-address.dev 连接到它。正如您在上面看到的,我通过 IP 地址连接到数据库,因为它不在 localhost 的范围内。这种设置在其他框架中没有给我带来任何问题。如果我在 codeigniter 或 yii 设置中输入相同的凭据,它会很好地连接到数据库。
    • 可能与stackoverflow.com/questions/6538484/…有关(Laravel 使用的是 PDO MySQL)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-06
    • 2017-08-26
    • 2018-06-18
    • 2019-05-10
    • 2018-02-15
    • 2016-01-15
    • 2011-01-14
    相关资源
    最近更新 更多