【发布时间】: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