原始springboot迁移达梦数据库后,出现“无效的表或视图”,怎么解决
原因:
- 新建数据库实例的时候,没有开启大小写不敏感;
-
迁移数据库的时候,选择模式所有者是SYSDBA,而SYSDBA模式下面默认已经有了一个模式SYSDBA了,所以通过SYSDBA登录,对我们数据库执行sql语句的时候,就会报上面的错误;原因是因为达梦数据库设计就是这样的,支持一个用户管理多个模式(即数据库)。然后如果是默认的模式,执行sql的时候,数据库会默认在表名前加上”模式名.”,比如默认数据库是test,我们查询test输入的语句是select * from table1。系统执行的时候,默认执行的是select * from test.table1一:创建数据库的时候重新设置
二、新创建用户,解决默认模式的问题
一开始我们说明了产生这个问题的原因,是因为一个用户下面多个默认,然后默认模式不是我们迁移的模式,就会引起这个问题。很多人会说,那我将我们默认的模式设为自己的数据库不就能解决嘛。对这样可以解决,但是治标不治本。达梦数据库,支持通过命令语句去设置默认的模式,但是如果服务器重启,需要重新进行设置(这个我们也是从网上找的帖子是这么说的)。其次,如果你们公司有多个数据库,那大家不得抢这个默认的模式,抢的打架。为每个数据库新创建一个管理用户,每个用户只管理一个模式(数据库),那这个肯定是默认模式呀。(当前表所在的模式(理解为mysql的数据库)是ESO,我们登录账户是SYSDBA,两者不一致时,需要写上模式作为前缀。若一致则不需要写(用ESO账号登录时))好了,回归正题~~~
2.1现在我们来创建用户,输入如下命令:
创建DMDBA用户(这个用户名最好跟你的数据库名称一致)
CREATE USER DMDBA IDENTIFIED BY "密码";或者直接在操作界面右键创建
-
赋于用户权限
-
GRANT RESOURCE,PUBLIC,VTI,SOI TO DMDBA;
GRANT BACKUP DATABASE,ADMIN JOB TO DMDBA;
2.2重新开始迁移
通过管理工具,新建模式DMDBA
设置所有者为我们新创建的用户名
指定模式的时候,选择DMDBA
最后下一步下一步完成迁移。
然后退出当前登录的SYSDBA用户,用创建的DMDBA用户登录达梦管理工具,执行语句就不会报错了。
好了,就到这里,温馨提醒一下,记得修改你们的连接池配置,改为DMDBA用户哈。