【问题标题】:Laravel connection timeout when connecting to database连接数据库时Laravel连接超时
【发布时间】:2017-02-17 17:17:48
【问题描述】:

我正在将应用程序从我的开发机器移动到测试服务器。当连接到我的本地开发 mysql 数据库时,一切都按预期工作。尝试连接到我们的测试服务器时,请求会在 45 秒后超时并返回 500 错误。

我用mysqli php的基本功能测试了服务器可以通信,php可以得到结果,结果按预期返回:

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$sql = "SELECT * FROM users";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo var_export($row, true);
    }
} else {
    echo "0 results";
}
$conn->close();

以下在 laravel 中都失败并达到超时限制:

$users = DB::table('users')->get();

$users = User::all();

想法?想法?意见?

【问题讨论】:

  • 第一个只是尝试连接。第二个从 User 表中检索所有记录。他们不比较。在 mysql 命令行中尝试select * from users,看看需要多长时间。然后尝试一些日志记录——在测试期间打开 mysql 的慢日志和/或 general_log。
  • @aynber 在研究您的评论后更新了问题
  • 下一步是找出它是只是表,还是所有使用这些方法的数据库查询。试试DB::select("SELECT NOW()"); 看看是否超时。然后DB::select("SHOW TABLES");DB::select("DESCRIBE users");
  • @aynber 对于您建议的每个选择语句,结果都是相同的。
  • 如果这些查询超时,尤其是现在的选择,那么 laravel 和您的数据库之间肯定存在问题。您是否使用完全相同的凭据在与 laravel 应用程序相同的服务器上运行 mysqli 脚本?

标签: php mysql laravel eloquent


【解决方案1】:

我有同样的问题。我做了var_dump(DB::connection());,发现主机值错误,因为加载了错误的.env文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-05
    • 1970-01-01
    • 1970-01-01
    • 2011-10-19
    • 2013-06-20
    • 1970-01-01
    相关资源
    最近更新 更多