已解决。
任何人都知道如何解决以下MariaDB CONNECT存储引擎错误?
错误1296(HY000):在CONNECT中收到错误122'无法检索错误消息'>
如果在使用CONNECT引擎JDBC表检索一天或2天的数据后从JDBC外部表中选择,则会发生以上错误。
我如何调试更多?
我尝试了connect_xtrace = 1023。输出到mysqld.log,但是仍然没有太多信息可用于进一步检查。还尝试更改JDBC驱动程序,并且仍然相同。
我已安装MariaDB-server-10.3.21-1.el7.centos.x86_64.rpm。并且正在使用MariaDB 10.3.21。]
感谢和问候,KH
任何人都知道如何解决以下MariaDB CONNECT存储引擎错误?错误1296(HY000):从CONNECT获得错误122'无法检索错误消息'如果我从..... >>>
已解决。
总而言之,意识到我尝试使用connect_xtrace = 1023,但是将其设置为全局变量且未将其设置为会话变量,因此其作用不是立即发生的。将其设置为会话变量后,便可以将其跟踪到内存分配失败。
[使用CONNECT引擎JDBC表检索一天或2天的数据后,从CONNECT存储引擎JDBC外部表中进行选择时出现的错误是:“错误1296(HY000):出现错误122'无法从CONNECT检索错误消息'” ...,尝试创建CONNECT存储引擎JDBC外部表时出现错误:“错误1030(HY000):从存储引擎CONNECT获得错误122”处理程序中的内部(未指定)错误“]
我最近刚刚注意到以下几行也出现在mysqld.log中:工作区:内存分配失败:malloc返回Null
因此尝试再次进行故障排除...
也许我以前使用过set global connect_xtrace = 1023;仅更改全局会话的设置,而不更改当前会话的设置。因此,这次这次尝试设置会话connect_xtrace = 1023,并且下面的相关日志条目开始出现。
所以关键是为会话设置connect_xtrace = 1023。我的坏。
无论如何,mysqld.log条目现在有更多信息:...新的CONNECT 0x7fc46403de80,表:mssql_CURRENCY_RATE打开:name =。/ _ TMP_D / mssql_CURRENCY_RATE mode = 2 test = 18 PlugInit:Language ='Null'SareaAlloc:内存分配失败:malloc返回Null删除CONNECT 0x7fc46403de80,表:mssql_CURRENCY_RATE,xp =(nil)count = 0 ... PlugInit:语言='Null'SareaAlloc:内存分配失败:malloc返回Null新建CONNECT 0x7fc46403de80,表:mssql_CURRENCY_RATE打开:name = ./_TMP_D/mssql_CURRENCY_RATE模式= 2测试= 18 ...
因此,尝试设置一个低得多的connect_work_size值:64MB(默认值),事情又恢复了!没有更多错误。
所以结论似乎是,随着mysqld和OS随着时间的推移使用越来越多的内存,一段时间后CONNECT引擎停止能够基于connect_work_size进行分配。
然后尝试将connect_work_size设置为1GB并再次尝试选择,仍然可以使用。再增加1GB,然后再次选择,重复几次。从mysqld.log开始注意到,为connect_work_size设置的内存在一段时间后停止遵循,并且使用了上一次成功的值。 (这似乎是根据文档)。
由于我没有找到关于将connect_work_size设置为多少的更详细的指南,因此在使用CONNECT引擎之前,我将调用存储过程来设置connect_work_size,请尝试设置所需的大小,然后尝试使用CONNECT引擎(如果失败) ,请尝试使用较小的尺寸,然后尝试使用CONNECT引擎,如果失败,请重复进行,直到一切正常为止。
如果:a)以类似于innodb_buffer_pool_instances,innodb_buffer_pool_chunk_size,innodb_buffer_pool_size的方式实现connect_work_size,可能会很好,b)最好具有connect_work_size_guaranteed之类的东西,它可能是分配的内存,但从未释放过,具有最小内存插件的内存保证。 c)有更详细的文档;即:如果大约表的行大小为xxx且在任一时间点在内存中查询的行为yyy,则connect_work_size必须为(xxx * yyy)* 1.1。
已解决。