达梦数据库笔记之解决默认模式与当前表所属模式不匹配

场景:为什么已经配置了:jdbc:dm://112.86.129.73:5236/test,但当我使用SQL查询还是需要from "test"."a_authority",能不能直接from "a_authority"?不推荐。

问题:正处在 SYSDBA 用户对应的模式下,如果执行的所有 SQL 操作如果不指定模式,都会默认在 SYSDBA 模式中查找对象。

原因:

当你执行SELECT * FROM a_authority;时,数据库会按照「当前会话的默认模式」去查找表a_authority:

  • 如果你的登录用户(JDBC 连接的用户名,比如SYSDBA)的默认模式不是test数据库就找不到a_authority表。
  • 而写"test"."a_authority"是全限定名查询,明确指定了"从test模式中查找a_authority表",无需依赖默认模式,因此可以查询成功。

方案 :修改登录用户的「默认模式」(不可取)

如果你的 JDBC 登录用户是SYSDBA(或其他用户),可以将该用户的默认模式修改为test,后续该用户登录后,默认就会操作test模式下的对象。

执行以下 SQL 语句(需拥有 DBA 权限):

sql 复制代码
-- 语法:ALTER USER 登录用户名 DEFAULT SCHEMA 目标模式名;
ALTER USER SYSDBA DEFAULT SCHEMA test;

修改后,重新建立 JDBC 连接,即可直接执行SELECT * FROM a_authority;。

但是如果后续服务器上又修改其他模式默认模式的话,原先的代码会报错找不到当前模式下该表,不利于代码维护。

对于非默认模式,日常开发、生产环境中,优先且推荐使用「模式名。表名」访问。

相关推荐
这个DBA有点耶8 小时前
从症状到根因:数据库监控指标的分层方法与静态/动态阈值策略
数据库·mysql·代码规范
SelectDB9 小时前
时间旅行与快照能力速查:Doris 侧三条落地路径
大数据·数据库·数据分析
SelectDB9 小时前
云数仓成本结构拆解速查:五层计费 vs Doris / 托管形态
大数据·数据库·数据分析
SelectDB9 小时前
什么场景能承接与建议保留:Doris vs Snowflake 边界速查
大数据·数据库·数据分析
这个DBA有点耶11 小时前
DELETE没删多少数据,表却越来越大——InnoDB删除空洞与页合并失效的根因
数据库·mysql·代码规范
ly768914 小时前
PostgreSQL 备份恢复策略:pg_basebackup、WAL 归档与 PITR 在企业 Java 系统中的落地
java·数据库·postgresql·pitr·pg_basebackup·wal 归档
小羊没烦恼!15 小时前
Ajax与JSON的一些总结
android·java·前端·数据库·mysql·算法·okhttp
注塑机数据采集联网15 小时前
如何解决注塑机数据采集联网对接MES系统数据WiFi传输数据不稳问题
大数据·数据库·物联网·数据挖掘·数据分析
黄俊懿15 小时前
【架构师从入门到进阶】第六章:服务集群优化——第八节:线程数公式
java·服务器·数据库·分布式·性能优化·架构·系统架构