ClickhouseHouse问题汇总
1.Parameters start = 0, length = 100 are out of bound in ColumnVector::insertRangeFrom method (data.size() = 5). (version 20.1.3.7 (official build))
在执行下面的Mybatis语句时,出现了上面的错误。
1 | SELECT * FROM lsmfhx.v_realtime WHERE SiteNo in |
最后将#{order2}符号换成了${order2}符号,解决了问题。
1 | <select id="searchHistoryBySiteNo" resultType="com.bibichuan.bigdata.Entity.VRealTime" > |
1.order by limit: out of bound #8553
2.Exception is thrown when ORDER BY .. LIMIT is used
3.Mybatis报错
4.Mybatis-Error: Could not set parameters for mapping
5.MyBatis报错:Could not set parameters for mapping: ParameterMapping{property=’categoryName’, mode=IN, j
2.Exception: Cannot parse datetime 2016-09-20 13:46 (version 20.1.3.7 (official build)
当Clickhouse数据库中的字段是日期类型的时候,容易出现日期格式问题。比如下面用Mybatis写的SQL语句。
1 | SELECT ${fieldlist},RecordTime,SiteNo FROM lsmfhx.v_realtime where RecordTime |
startdate和enddate变量传入的值,必须是”2010-02-02 09:02:00”这种样式,而不能是”2010-02-02 09:02”这样的样式,否则就会报错。
3.Max query size exceeded
在我使用in方式查询的时候,出现了上面的错误。
这其实是因为查询语句特别的大造成的(我的in()里面有5万多个id号),而默认的max_query_size最大是256 KiB。打开/etc/clickhouse-server/user.d/newuser.xml(我新建的自己的newuser.xml配置文件),也可以是其他的users.xml,其中有两个部分,一部分是profiles和quotas。profiles保存了用户的配置,quotas保存了用户的配额。配额使您可以限制一段时间内的资源使用,或仅跟踪资源的使用。像max_query_size这种配置,就需要在profiles部分中配置。
注意这里的单位是bytes(字节),我这里设置了102410241024=1,073,741,824,就解决问题了。
4.Code: 168, e.displayText() = DB::Exception: AST is too big. Maximum: 50000 (version 19.17.5.18 (official build))
解决了上面的max_query_size问题,再次执行语句,出现了AST太大了。
解决方法是在users.xml配置文件中添加
1 | <max_ast_elements>10000000</max_ast_elements> |
5.19.17 Method createColumn() is not implemented for data type Set.
我在一台机器上安装了19.17版本的clickhouse数据库。执行:
1 | SELECT MediumType FROM lsmfhx.v_realtime where RecordTime BETWEEN '2016-09-20 13:00:00' AND '2016-09-21 13:46:00' AND MediumType = 0 and (SiteNo in (1) ) ORDER BY RecordTime |
总是报错:Method createColumn() is not implemented for data type Set。我尝试了将MediumType条件删掉,或者将SiteNo in删掉,都可以执行。后来通过升级了数据库版本,将版本从19.17升级到19.20就解决了相关的问题。(忘记截图了)
1.19.17 Method createColumn() is not implemented for data type Set.
2.Method createColumn() is not implemented for data type Function((String, String) -> String)
6.no further information
当我使用只读用户进行JDBC用户连接的时候,出现了no further information错误。
通过查看日志文件,发现原来是因为我的配置文件配置错误,导致服务器停止运行了。日志文件所在位置:/var/log/clickhouse-server
1.clickhouse设置密码登录以及只读账号
2.database - 无法启动Clickhouse服务,.. / data / default /
3.clickhouse 安装 使用 (写了很多不常见的细节,比如错误日志的文件,比如mysql数据类型对比)
7.Cannot reserve 1.00 MiB, not enough space
这个问题,多半就是磁盘空间满了
(1) 我刚开始尝试,使用:set max_map_count to 1048576,不起作用。
(2) 然后我使用了:df -hl查看磁盘的剩余空间,发现真的是满了。
其中的/dev/mapper/cl-root使用了100%。当我使用vim编辑的时候,也是会出现:Can’t write viminfo file /root/.viminfo.tmp!这个问题
(3) 根据相关参考文章,我尝试使用下面的命令,查找大文件
1 | ## 查看磁盘剩余情况 |
1.Cannot reserve 1.00 MiB, not enough space (这里说其实是因为磁盘的可用空间已经满了)
1.DB::ErrnoException: Allocator: Cannot malloc 1.00 MiB., errno: 12, strerror: Cannot allocate memory (这里有人说是设置set max_map_count to 1048576,但是我没有成功)
2.LFAlloc exhaust vma limit (vm.max_map_count)
3./dev/mapper/cl-root 100%满了 (查找大文件,然后进行删除)
4.Linux 查看文件夹大小,磁盘剩余空间(du/df) (查看磁盘空间)
5.centos /dev/mapper/cl-root 100% 解决方法 (查找大文件,然后进行删除)
8.service clickhouse-server status:clickhouse-server service is stopped
使用service clickhouse-server status命令查看clickhouse的运行状态,显示的是:clickhouse-server service is stopped,但是使用:clickhouse-client 命令进行连接,却显示已经连接上了。
先使用kill命令将clickhouse进程杀死,然后重新启动。
1.Centos/8: sysV vs systemd mess. Service status is ‘stopped’ although it is running
2.service clickhouse-server status returns clickhouse-server service is stopped despite it running (这是在docker中进行的安装,和我的真机运行有些差距)
3.Clickhouse常见问题 (这里有相关的log查看说明)
4.ClickHouse进程杀不掉 (进程杀不掉,其实是因为clickhouse有自动重启的机制)