MySQL UNION ALL拼接语句行数太多出错的解决方案

MySQL UNION ALL拼接语句行数太多出错的解决方案

MySQL UNION ALL拼接语句行数超过5332行,执行就出错!5332行通过,再加一行UNION ALL就是出错。5332行时把某行内容加长很多也不会出错,说明与字符无关。

错误代码: 1436
Thread stack overrun: 246160 bytes used of a 262144 byte stack, and 16000 bytes needed. Use ‘mysqld --thread_stack=#’ to specify a bigger stack.

网上说把my.ini文件的参数改为 thread_stack=256k 重启就好了。事实证明,改了也没用! 改thread_stack=1024k都没用! 又产生了新的错误:
错误代码: 1064
memory exhausted near 'UNION ALL SELECT …

我的拼接语句有3万多行,最终什么参数都不用改,改脚本,简单来说就在外面加一层:
原来出错的脚本:
SELECT ‘aaaaaaaa’ AS 名称
UNION ALL SELECT ‘bbbbbbbb’
UNION ALL SELECT ‘ccccccccc’
UNION ALL SELECT ‘dddddddd’
UNION ALL SELECT ‘eeeeeeee’ /* 后面还有三万行略 */

改装后正确的脚本:
SELECT Q.名称
FROM(
SELECT ‘aaaaaaaa’ AS 名称
UNION ALL SELECT ‘bbbbbbbb’
UNION ALL SELECT ‘ccccccccc’
UNION ALL SELECT ‘dddddddd’
UNION ALL SELECT ‘eeeeeeee’ /* 后面还有三万行略 */
) Q
显示正确结果,原理不详,实在是我试出来的。

总结

MySQL UNION ALL拼接语句行数太多出错的解决方案就是在外面再包一层即可!妙!高!实在是高!

加粉丝看
MySQL技巧系列之《未经证实的葵花宝典》:一篇可以当饭吃的MySQL文章,值得收藏

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值