簡體   English   中英

省略DERBY查詢中的模式

[英]Omit schema in the DERBY Query

我創建了一個名為'movie_db'的數據庫,將默認架構設置為APP。 然后創建了一個名為“USERS”的示例表。

我與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

一切正常。

如何在查詢中省略模式名稱?

更新:像Bryan說的那樣,我創建了一個名為默認模式的用戶,並使用此登錄進行授權。 這是在查詢中省略模式名稱的最簡單方法。 但是,如果我想使用多個模式,唯一的方法是明確設置模式。

基本上有兩種方法來控制默認架構名稱:

  1. 連接到數據庫后發出SET SCHEMA語句。
  2. 以與您要使用的架構同名的用戶身份登錄。

如果您尚未發出SET SCHEMA語句,則Derby將使用您的用戶名作為模式名稱。

因此,如果您以“APP”用戶身份登錄,並且未發出SET SCHEMA語句,則您的架構名稱將為APP。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM