【问题标题】:Limit on amount of rows retrieved MySql, Laravel限制检索到的行数 MySql,Laravel
【发布时间】:2017-05-25 02:39:46
【问题描述】:

问题

我的问题是使用 Mysql 或 Laravel 通过查询返回的行数是否有任何限制?

首先我使用 Laravel 5.2,我试图从我的日志表中检索我的数据,该表最近达到了 10k 多行,现在从那时起(或大约在那个时候)通常的 laravel 语法来检索数据不起作用

语法

$logs = Log::all()

return $logs; //This is then handled by Vue.js on the client side

以前可以正常工作,现在不行了,没有返回任何内容,chrome devtools 中也没有显示任何错误,只是一个空字符串。

我最近才进入数据库,并注意到信息仍在每天添加到日志中,因此我的代码仍在工作,但是当我尝试检索信息以在客户端显示它时它不起作用。

我认为问题是什么

这让我相信 Laravel 或 MySQL 对检索的行数有某种限制?我不知道如何检查我的查询限制以及什么不是。

我做了什么

我已经查看了 stackoverflow 的答案,但我没有发现任何有用的东西,我遇到有人说只要表被正确索引等,900 万行就可以了。

我之前问过一个问题,但所有的答案和建议都不正确,所以希望这些新发现的信息可以对这个问题有所帮助。

【问题讨论】:

  • chrome devtool 中没有显示错误,但是在其他地方呢,比如在网络服务器日志上?
  • 您可以尝试使用Log::orderBy('id', 'desc')->take(100)->get(); 获取最后 100 行,看看是否可行?
  • @apokryfos 我检查了 laravel 日志,但我不确定网络服务器日志在哪里
  • 你可能只是达到了内存限制:stackoverflow.com/questions/18593852/…

标签: php mysql laravel-5.2


【解决方案1】:

问题最终是我的查询 Log::all(); 撤回了超过 1.1mb 的信息,而我的服务器对查询的限制达到了 1.1mb。有两个人帮助我发现并解决了问题。

@RobertoGeuke:

“你可以尝试使用Log::orderBy('id', 'desc')->take(100)->get(); 获取最后 100 行,看看是否可行?

你可以增加 你的take() 方法有 1000 个步骤,看看它什么时候失败。它会 给限制一个数字,也许会有所帮助。”

这帮助我澄清了我的查询从数据库中请求了太多信息,但我仍然不确定这是行限制还是内存限制。

@SergChernata:

“您可能只是达到了内存限制: Laravel Eloquent ORM maximum rows it could retrieve

[增加内存限制?]有很多方法: How to increase memory limit for PHP over 2GB?"

这帮助我查明了问题,并为我提供了增加内存限制的选项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-19
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多