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

最近用户一直抱怨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,转载请注明

你可能感兴趣的:(mysql,hive)