Hive Web查询语句插入mysql数据库报错

1 篇文章 0 订阅

最近用户一直抱怨Hive Web Client在提交某些查询后,不会返回结果到前端,比如join五张表的语句就不行,只有去掉一个join

先查询写入一张临时表,再和最后一张表join才行。

我后来debug了下,发现语句确实是成功执行了的,而且结果文件已经dump到hive web的本地系统文件中,这就有点奇怪了,难道是输出格式不对或者结果中

有脏字符,在逐一排除掉其他可能的问题后,最终定位到将query写回mysql db这段逻辑,由于需要保存用户提交的query,执行时间,结果文件路径等供用户二次查看下载,在语句执行完后,

会将这些信息通过ORM框架(mybatis)写入mysql中,然而之前在设计mysql中hivequery字段的时候没考虑用户会写很长的语句,就设置了varchar(1000),也就是query最多保存1000个字符,如果超过1000个字符就会发生错误,这就导致了虽然语句执行成功了,但是差在最后一口插mysql的气上,整个执行failed。


varchar是mysql字符变长类型,长度范围可指定在0到65535,不过我们也可以使用text类型(TEXT is stored off the table with the table just having a pointer to the location of the actual storage),最大长度也是65535,我在sqlyog中修改列schema 为varchar(65535)它会自动帮我切换到text类型,改完schema后,之前长query就能顺利插入db了。


参考:

http://dev.mysql.com/doc/refman/5.1/zh/column-types.html#char

http://stackoverflow.com/questions/2023481/mysql-large-varchar-vs-text


本文链接http://blog.csdn.net/lalaguozhe/article/details/9078633,转载请注明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值