Sails 不会填充大型查询

Sails doesnt populate on large queries

我有一个正在使用的遗留 mysql 数据库,其中包含 5 个表,其中 2 个是 join/junction 表。我在控制器中有一个方法可以查询其中一个表并通过连接表填充一些字段。这适用于少于 1632 项的查询,但对于超过 1632 项的查询,填充字段数组不包含任何数据。没有错误被抛出,字段只是空白,例如"user": []。将 SQL 查询记录到 MySQL 容器中表明,对于项目 > 1632,处理人口(inner_joins 等)的第二个查询不会出现。

有没有其他人以前遇到过这种情况?我已经在位于节点 v4.2.6 顶部的 sails 0.12.0 & 0.11.4 和 sails-mysql 0.11.4 & 0.11.1 上进行了测试。我是 运行 api 和 docker 容器中的数据库,并且已经测试过向 docker 主机配置更多 RAM 但无济于事。

我的特殊问题是 MySQL thread_stack 尺寸太小了。

我的调试路径是通过向节点 mysql 模块中的 Connection.prototype.query 函数添加 console.log 来查看进入节点 mysql 模块的水线查询sails-mysql。然后我查询水线正在制作并 运行 它直接在数据库中产生错误 ERROR 1436 (HY000): Thread stack overrun: 246168 bytes used of a 262144 byte stack, and 16000 bytes needed. Use 'mysqld --thread_stack=#' to specify a bigger stack.

非常感谢 SailsJS 的同事们帮助我解决了这个问题。可以在 https://github.com/balderdashy/sails/issues/3561

找到特定的讨论