首先声明,在两个数据库中(Oracle叫做模式)存在相同的数据库表名,内容不管
首先我们来看看遇到的第一个问题:
spring.datasource.url作用是什么,那么指定数据库名称(oracle叫模式名)与不指定有什么区别?
首先回答第一个问题:url其作用就是用来进行数据库链接。 OK 现在回答第二个问题:第二个问题需要进行区分数据库类别,首先是大家都在使用的mysql,我们发现当不指定数据库名称的时候会出现一个叫做No database selected的错误如图
其次我们来看看oracle不指定模式名称的区别:
假设,假设,假设 前面有三个假设希望大家看清楚,假设我们现在通过进行oracle链接,当前登录用户创建了两个模式进行数据交互,我们起始条件是这两个模式中都拥有一个共同的表。那么我们直接通过sql查询数据库的时候会出现什么错误呢。让我们来试试。
果不其然出现了错误,那么当我们加上模式名称呢试试结果。
如此说明在不指定当前用户的默认模式名那么不加上模式名称进行查询的话会出现一个无效的表或者试图名,当加上对应模式名会产生对应的结果。
那么我们可以通过sql语句进行设置默认的模式名如下:
set schema (模式名称)
假设,假设,假设:
再一次假设,第一个模式A中有一个equ表里面有100个记录,第二个模式B中有一个equ表里面有0个记录,我们指定当前用户默认模式名称为模式A首先看代码截图你们觉得会在那个表中获取数据
你们会觉得从模式B中获取0个记录吗?
在不指定模式名称的情况下就算url中指定了模式名称当前用户查询也会去默认模式中获取对应信息。 在查询语句 中指定模式B.EQU那么会获取模式B中的0条记录。