当我在 AWS 中从本地 Homestead 更改为 prod 时,Laravel 引发 SQLite 错误
Posted
技术标签:
【中文标题】当我在 AWS 中从本地 Homestead 更改为 prod 时,Laravel 引发 SQLite 错误【英文标题】:Laravel Throws SQLite error when I change from local Homestead to prod in AWS 【发布时间】:2018-10-06 20:15:38 【问题描述】:我创建了一个应用程序,它使用 Archon 库来创建和操作数据帧,here's 链接(顺便说一句,很棒的库!)。
应用程序将创建一个包含重复项的大型数组。我正在使用 Archon 的数据框功能来执行 groupBy 操作,以便获取数组中每个唯一条目的计数。
这个数组从几百个条目到几千个不等。
在本地,这很好用。我正在使用带有 VirtualBox 的 Vagrant - 我有一个 Homestead Box 在那里运行。它在 Ubuntu 64 位系统上运行。 我最近将我的应用程序部署到了一个弹性 beanstalk 实例,它在 64 位 Amazon Linux/2.6.6 上运行。
部署后,我收到了
的错误SQLSTATE[HY000]: General error: 1 too many SQL variables
所以似乎出于某种原因,在更改系统后,客户端与 Archon 构建的 SQLite 驱动程序进行了不同的交互。我不知道为什么这会在本地工作,但在部署后却不行。
这是我正在使用的产生错误的代码:
$df = DataFrame::fromArray($batch_array);
$senders_emails = $df->query("SELECT a,sum(b) AS bFROM dataframe GROUP BY 1ORDER BY 2 DESC")->toArray();
有没有人足够了解 SQLite/Archon/Homestead 与 EB 来提供帮助? 将不胜感激!
【问题讨论】:
【参考方案1】:您的$batch_array
数据过多。
这样考虑
$sendersEmails = [];
foreach (array_chunk($batch_array, 100) as $chunk)
$df = DataFrame::fromArray($chunk);
$emails = $df->query("SELECT a,sum(b) AS bFROM dataframe GROUP BY 1ORDER BY 2 DESC")->toArray();
$sendersEmails = array_merge($sendersEmails, $emails);
注意:这可能会导致内存溢出
要从根本上解决问题需要减少$batch_array
的数据量
What is maximum query size for mysql?
【讨论】:
感谢您的回答 qskane 和您的功能。我知道这是由于数组的大小,但是为什么相同的数组在本地可以正常工作?这似乎与机器/环境设置有关? 是的,一般是环境差异造成的@ShaunPreston 你知道很多不同之处吗?希望了解幕后发生的事情...... 对不起,这个真的很难说清楚,现在是什么错误? @ShaunPreston以上是关于当我在 AWS 中从本地 Homestead 更改为 prod 时,Laravel 引发 SQLite 错误的主要内容,如果未能解决你的问题,请参考以下文章
sh Laravel Homestead配置脚本,包括WP-CLI和AWS-CLI
在 Flutter 中从 Notification Service Extension 更改 CFBundleVersion #66448