当前位置: 首页 > news >正文

程序连接金仓数据库查询报错:ERROR:column r.id does not exist。字段不存在

要求: 框架源码不能变, 有什么配置可以让项目不查询系统表么?

在适配过程中经常会遇到程序查询目标表报错字段不存在的错误,实际上是因为当前实际查询的表并不是自己的目标表。

报错示例:ERROR:column r.id does not exist

image


情况一(列名确实不存在)

-- 先确认表结构和列名在目标模式下是否存在

\d+ 模式名.表名   -- 在ksql中查看表结构或
SELECT column_name FROM information_schema.columns 
WHERE table_name = '表名' AND table_schema = '模式名';

如果查出来实际模式下并没有目标表,需要先将表导入,再调用程序查询;

如果查出来实际模式下确实存在该目标表,请参考情况二、三


情况二(与系统表重名)

程序查询目标表(例如:sys_user、sys_config等)与金仓数据库系统表重名,程序默认会先查询系统表,所以会报错字段不存在的错误(ERROR:column r.id does not exist)。此时,我们需要将目标表所在的模式优先级提高,提升到public与系统模式之上。

1、首先确认目标表所在的模式以及数据库(例如表是在test库的cms模式下)

2、使用system用户命令行登录test数据库或者使用KStudio连接test库执行以下sql

 alter database 数据库名 SET search_path to “$user”,模式名,public,sys_catalog,sys,pg_catalog;然后执行 select sys_reload_conf();   -----重置配置文件注:数据库名改成test,模式名改成cms,执行时以自己实际库和模式为准。

3、执行之后,不论是命令行还是客户端工具都需要断开重连一下,还是使用system用户登录test库执行show search_path; 确认cms模式是否已经提升优先级。

image

4、此时程序断开重连测试,字段不存在问题已解决。

**注:如果是与系统表重名,不可以使用连接串加?currentSchema='模式名'的方式来指定模式。**


情况三(与其他模式表重名)

在不配置模式优先级的情况下,public模式的优先级比其他普通模式要高。会优先查询public再查询其他模式对象。

如果同一个表,在public模式下和目标模式下都存在,但是结构不一样。这个时候也会报错列名不存在的错误。此时我们需要提高目标模式的优先级

方法一 (同上一步):

alter database 数据库名 SET search_path to “$user”,模式名,public,sys_catalog,sys,pg_catalog;然后执行 select sys_reload_conf();   -----重置配置文件注:数据库名改成test,模式名改成cms,执行时以自己实际库和模式为准。

方法二(url指定模式):

jdbc:kingbase8://ip地址:端口/库?currentSchema='模式名'

image
注:方法一和方法二值可选一种使用,不可同时配置

http://www.wxhsa.cn/company.asp?id=1016

相关文章:

  • 论Intel CPU 进化史:德承工控机全面进化 搭载新一代 Intel Core™ Ultra 7/5/3 处理器 - Johnny
  • STM32F103C8T6标准库移植FreeRTOS教程
  • mysql绿色版,无需安装的快速数据库解决方案
  • MyEMS:功能强大的开源能源管理系统,助力企业实现精细化能效管理
  • mysql唯一索引,原理、创建与应用详解
  • redis查询和添加key的最简单方法
  • 111111
  • The 2025 ICPC Asia East Continent Online Contest (I) 7/13 A/B/C/D/G/I/M
  • [PHP之代码审计篇]CTFshowWeb入门 Web301~Web310
  • SAP取税率
  • mysql 导入sql,从入门到精通
  • Kubernetes Pod
  • selenium+browsermobproxy抓POST请求
  • 算法-Dijkstra算法-02 - jack
  • typescript面试题
  • LIN通信协议入门
  • 答题赚现金程序介绍
  • 番茄社交营销商城系统介绍
  • framework中按压power键屏幕熄灭及亮起时流程
  • 标书智能体(二)——生成标书提纲代码+提示词
  • 易客云会员系统相关介绍
  • 线段树模版
  • 设计模式-责任链模式
  • Linux开机启动设置全攻略
  • 实用指南:Grafana - 监控磁盘使用率Variables使用
  • iphone可以用windows系统吗
  • iphone怎么变windows系统
  • P4694 [PA 2013] Raper
  • 共享内存使用举例
  • 【QML】解决 Qt C++ 正则表达式中文匹配问题