这种异常通常是因为mycat的元数据信息没有及时更新导致的。

Mycat是一个数据库中间件,它通过拦截和重写SQL语句来实现读写分离、分库分表等功能。当你在数据库中新增表字段后,mycat并不会立即感知到这个变化,它的元数据信息可能还是旧的。

当你执行查询操作时,mycat会根据元数据信息来解析SQL语句,并将解析后的SQL发送给实际的数据库执行。由于元数据信息没有更新,mycat会认为新增字段不存在,从而抛出"Unknown column"异常。

解决这个问题的方法是让mycat的元数据信息与数据库保持同步。可以通过以下方式实现:

  1. 重启mycat:重启mycat会重新加载元数据信息,但这会导致服务中断,不适合在生产环境中使用。

  2. 执行refresh命令:在mycat的管理终端执行refresh命令可以重新加载元数据信息,例如refresh schema table可以刷新指定表的元数据信息。但这种方法需要手动执行,不够自动化。

  3. 配置自动刷新:在mycat的配置文件中,可以配置定时刷新元数据信息的功能。例如在server.xml中的<system>节点下添加<heartbeat check="true" period="60000"/>,表示每60秒自动刷新元数据信息。这种方式可以实现自动刷新,但可能会增加mycat的系统负载。

需要注意的是,无论采用哪种方式,都需要保证mycat的元数据信息与数据库的实际结构保持一致,以避免类似的异常问题

mycat中间件新增表字段后无法对该新增字段执行查询操作会抛出以下异常信息Unknown column pay_pin_kms_id in field list;如果对该表执行select from table; 也不会出现该新增字段请分析mycat为什么会出现这种异常

原文地址: https://www.cveoy.top/t/topic/hLOV 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录