达梦数据库中执行sql语句,提示报错-2103:无效的模式名[%s]。
![-2103:无效的模式名[%s]](http://www.wlkjzx.com/wp-content/themes/justnews/themer/assets/images/lazy.png)
复现场景1:创建重复模式报错
CREATE SCHEMA "SYSDBA_1" AUTHORIZATION "SYSDBA";
执行成功
CREATE SCHEMA "SYSDBA_1" AUTHORIZATION "SYS";
总共1个语句正依次执行...
[执行语句1]:
CREATE SCHEMA "SYSDBA_1" AUTHORIZATION "SYS";
执行失败(语句1)
-2103: 无效的模式名[SYSDBA_1]
1条语句执行失败
复现场景2:查询不存在的模式对象
select * from OA.TABLE1;
总共1个语句正依次执行...
[执行语句1]:
select * from OA.TABLE1;
执行失败(语句1)
-2103: 第1 行附近出现错误:
无效的模式名[OA]
1条语句执行失败
SELECT * FROM ALL_OBJECTS WHERE OBJECT_TYPE='SCH' AND OBJECT_NAME='OA';
复现场景3:大小写敏感问题
关于实例大小写是否敏感,区别如下:
数据库实例大小写敏感:
创建模式、对象及字段时,若不加双引号,则默认将小写转为大写,如果添加双引号,则与双引号中的大小写保持一致。对于表中的字段内容比较时,是区分大小写,即where password=’A’和 where password=’a’的查询结果是不一样的。
数据库实例大小写不敏感:
模式、对象、字段大小写无所谓,创建时指定大小写在显示时按创建时的大小写进行显示,但是在SQL中指定时不区分大小写。对于插入数据一样,保持插入的数据与插入时的大小写一样。在插入结果查询时,a和A是等价的,where password=’A’和 where password=’a’的查询结果是一样的。
查看当前数据库实例大小写敏感情况:
SELECT SF_GET_CASE_SENSITIVE_FLAG();
SELECT '大小写是否敏感:',DECODE(SF_GET_CASE_SENSITIVE_FLAG,'0','不敏感','1','敏感')
案例:大小写敏感库中,创建了表名自动转大写但查询的是小写的表
create table SYSDBA.tab1 (a int);
总共1个语句正依次执行...
[执行语句1]:
create table SYSDBA.tab1 (a int);
执行成功, 执行耗时30毫秒. 执行号:1623
影响了0条记录
1条语句执行成功
select * from SYSDBA."tab1";
总共1个语句正依次执行...
[执行语句1]:
select * from SYSDBA."tab1";
执行失败(语句1)
-2106: 第1 行附近出现错误:
无效的表或视图名[tab1]
1条语句执行失败
select * from SYSDBA."TAB1";
总共1个语句正依次执行...
[执行语句1]:
select * from SYSDBA."TAB1";
执行成功, 执行耗时1毫秒. 执行号:1624
1条语句执行成功
原创文章,作者:lzb,如若转载,请注明出处:http://www.wlkjzx.com/2023/07/05/2103%ef%bc%9a%e6%97%a0%e6%95%88%e7%9a%84%e6%a8%a1%e5%bc%8f%e5%90%8ds/