在达梦数据库中执行sql操作,很多时候都会越到报错:「-2103」:无效的模式名[xxx]的错误。该报错的原因其实很简单,但是我们需要先来理解达梦数据库的数据库模式。
在达梦数据库中,我们每创建一个用户,就会自动创建一个与用户名相同的模式出来,在模式中是具体的数据库对象,比如视图、表、函数等等。其次,达梦数据库每一个用户时支持创建多个模式的,也就是说我创建一个TEST用户,那么它会自动创建一个TEST的模式,默认的数据库对象都会在TEST模式,默认的模式在指定对象名时可以忽略模式名的前缀,比如TEST模式的A表,我们查询可以写为select * from TEST.A,或者可以忽略模式名写为select * from A。但如果TEST用户再创建一个TEST1的模式,那我们查TEST1模式中的表B的时候,就必须待模式名,比如:select * from TEST1.B,因为TEST1不是TEST用户的默认模式,所以必须加模式名前缀。
其次,我们还需要理解达梦数据库是一个单库模式,它不像mysql数据库是一个多库的模式。
下面我们来说说该错误代码的报错原因,一般来说有这么几个方面:
1、首先在数据库中检查,看是否有这个模式;
2、注意大小写敏感问题,在大小写敏感的数据库实例里面,如果模式名是小写,可以试试加将报错的模式加双引号,否则默认转成大写;
测试案例:
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条语句执行失败