为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:8
【操作系统】:kylin
【CPU】:x86_64
【问题描述】*:
通过mybatis-plus代码生成器获取所有的表名,发现获取不到自己自定义模式内的表,通过代码跟踪,跟踪到了达梦JDBC驱动内的这个方法
dm.jdbc.driver.DmdbDatabaseMetaData
public DmdbResultSet do_getTables(String var1, String var2, String var3, String[] var4) {
if (StringUtil.equals(var2, "")) {
DBError.ECJDBC_SCHNAME_EMPTYSTRING.throwException(new String[0]);
}
if (StringUtil.equals(var3, "")) {
return null;
} else {
String var5 = var2 == null ? "%" : StringUtil.processSingleQuoteOfName(var2);
String var6 = var3 == null ? "%" : StringUtil.processSingleQuoteOfName(var3);
StringBuilder var7 = new StringBuilder("");
var7.append("SELECT /*+ MAX_OPT_N_TABLES(5) */ NULL AS TABLE_CAT,SCHEMAS.NAME AS TABLE_SCHEM,TABS.NAME AS TABLE_NAME, CASE TABS.SUBTYPE$ WHEN 'UTAB' THEN 'TABLE' WHEN 'VIEW' THEN 'VIEW' WHEN 'STAB' THEN 'SYSTEM TABLE' WHEN 'SYNOM' THEN 'SYNONYM' END AS TABLE_TYPE, (SELECT COMMENT$ FROM SYSTABLECOMMENTS WHERE SCHNAME = SCHEMAS.NAME AND TVNAME = TABS.NAME) AS REMARKS, NULL AS TYPE_CAT, NULL AS TYPE_SCHEM, NULL AS TYPE_NAME, NULL AS SELF_REFERENCING_COL_NAME, NULL AS REF_GENERATION ");
var7.append(" FROM");
var7.append(this.schemaClause(var5, "SCHEMAS,"));
var7.append(this.tableClause(var6, var4, "TABS"));
var7.append(" WHERE TABS.SCHID = SCHEMAS.ID ");
if (this.hw) {
var7.append(" AND (SF_CHECK_PRIV_OPT(UID(), CURRENT_USERTYPE(), TABS.ID, -1, -1, TABS.ID) = 1) ");
}
var7.append(" ORDER BY TABLE_TYPE ASC,TABLE_SCHEM ASC,TABLE_NAME ASC;");
return DriverUtil.executeQuery(this.connection, var7.toString());
}
}
调试后,发现执行了以下SQL,结果集内没有自己自定义的模式和表
SELECT /*+ MAX_OPT_N_TABLES(5) */ NULL AS TABLE_CAT,
SCHEMAS.NAME AS TABLE_SCHEM,
TABS.NAME AS TABLE_NAME,
CASE TABS.SUBTYPE$ WHEN 'UTAB' THEN 'TABLE' WHEN 'VIEW' THEN 'VIEW' WHEN 'STAB' THEN 'SYSTEM TABLE' WHEN 'SYNOM' THEN 'SYNONYM' END AS TABLE_TYPE,
(SELECT COMMENT$ FROM SYSTABLECOMMENTS WHERE SCHNAME = SCHEMAS.NAME AND TVNAME = TABS.NAME) AS REMARKS,
NULL AS TYPE_CAT,
NULL AS TYPE_SCHEM,
NULL AS TYPE_NAME,
NULL AS SELF_REFERENCING_COL_NAME,
NULL AS REF_GENERATION FROM(SELECT ID, PID, NAME
FROM SYS.SYSOBJECTS
WHERE TYPE$ = 'SCH')SCHEMAS,(SELECT ID, SCHID, SUBTYPE$, NAME FROM SYS.SYSOBJECTS WHERE TYPE$ = 'SCHOBJ' AND((SUBTYPE$='UTAB' AND CAST((INFO3 & 0x00FF & 0x003F) AS INT) not in ( 9, 27, 29, 25, 12,7, 21, 23, 18, 5) )OR SUBTYPE$='VIEW' ))TABS WHERE TABS.SCHID = SCHEMAS.ID AND (SF_CHECK_PRIV_OPT(UID(), CURRENT_USERTYPE(), TABS.ID, -1, -1, TABS.ID) = 1)
ORDER BY TABLE_TYPE ASC,TABLE_SCHEM ASC,TABLE_NAME ASC;
结果集里面没有自己自定义的模式和模式下的表,请问这个是因为当前用户少了哪个权限导致的
谢谢
你可以通过管理工具看看你的用户下的角色有哪些。路径为管理工具-用户-管理用户-修改-所属角色查看