5

我创建了一个名为“movie_db”的数据库,将默认模式设置为 APP。然后创建了一个名为“USERS”的示例表。

我与数据库的连接如下:

<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

一切正常。

如何在查询中省略架构名称?

更新: 就像布莱恩说的那样,我用我的默认模式的名称创建了一个用户,并使用这个登录名进行授权。这是在查询中省略模式名称的最简单方法。但是,如果我想使用多个模式,唯一的方法是显式设置模式。

4

1 回答 1

7

控制默认模式名称基本上有两种方法:

  1. 连接到数据库后发出 SET SCHEMA 语句。
  2. 以与您希望使用的架构同名的用户身份登录。

如果您尚未发出 SET SCHEMA 语句,那么 Derby 将使用您的用户名作为模式名称。

因此,如果您以用户“APP”身份登录,并且不发出 SET SCHEMA 语句,那么您的架构名称将是 APP。

于 2013-04-01T00:57:19.403 回答