忽略模式在德比战中查询(Omit schema in the DERBY Query)

2019-08-18 10:53发布

我创建了一个名为“movie_db”数据库,设置默认模式,以APP。 然后创建了一个名为“用户”的样本表。

我对DB连接如下:

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">

    <property name="driverClassName" value="org.apache.derby.jdbc.ClientDriver"/>
    <property name="url" value="jdbc:derby://localhost:1527/movie_db"/>        
    <property name="username" value="root"/>
    <property name="password" value="pass"/>
</bean>

现在我想写一些测试,并尝试执行以下查询:

SELECT * FROM USERS;

我能得到什么:

java.sql.SQLSyntaxErrorException: Table/View 'USERS' does not exist.

当我指定正是我使用的架构:

SELECT * FROM APP.USERS

一切工作正常。

我怎么能在我的查询忽略架构名称?

UPDATE:像布赖恩说,我创建了一个用户与我的默认架构的名称以及与此登录授权。 这是在查询中省略架构名称的最简单方法。 但仍然,如果我想使用多个模式的唯一方法是显式设置模式。

Answer 1:

基本上有两种方式来控制缺省模式名称:

  1. 发出SET SCHEMA语句已连接到数据库后。
  2. 登录与相同的名称要使用模式的用户。

如果你还没有发布的SET SCHEMA语句,然后德比将使用您的用户名作为模式名。

所以,如果你登录为用户“APP”,并没有发出SET SCHEMA语句,那么你的架构名称将是APP。



文章来源: Omit schema in the DERBY Query