2017-07-24 100 views
0

我試圖連接在Google雲端平臺中運行的HANA數據庫。這裏是我的Java代碼,SAP HANA找不到表格/視圖

try { 
     Class.forName("com.sap.db.jdbc.Driver"); 
     String url = "jdbc:sap://myhost:39015/?"; 
     String user = "MYUSER"; 
     String password = "PASSWORD"; 
     System.out.println("Connecting to HANA..!"); 
     Connection cn = DriverManager.getConnection(url, user, password); 
     System.out.println("Connection to HANA successful!"); 
     ResultSet rs = cn.createStatement().executeQuery("select * from \"TWEETS\""); 
     rs.next(); 
     System.out.println(rs.getString(1)); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

SYSTEM模式存在TWEETS表,我可以能夠使用HANA sudio(Eclipse插件)查詢TWEETS表。但是,當我嘗試從java代碼查詢時,會發生以下異常。

com.sap.db.jdbc.exceptions.JDBCDriverException: SAP DBTech JDBC: [259] (at 14): invalid table name: Could not find table/view TWEETS in schema SYSTEM: line 1 col 15 (at pos 14) 
    at com.sap.db.jdbc.exceptions.SQLExceptionSapDB.createException(SQLExceptionSapDB.java:334) 
    at com.sap.db.jdbc.exceptions.SQLExceptionSapDB.generateDatabaseException(SQLExceptionSapDB.java:165) 
    at com.sap.db.jdbc.packet.ReplyPacket.buildExceptionChain(ReplyPacket.java:104) 
    at com.sap.db.jdbc.ConnectionSapDB.execute(ConnectionSapDB.java:1110) 
    at com.sap.db.jdbc.ConnectionSapDB.execute(ConnectionSapDB.java:854) 
    at com.sap.db.jdbc.StatementSapDB.sendCommand(StatementSapDB.java:925) 

注:我也試過下面的組合,但沒有運氣!

1. "select * from TWEETS" 
2. "select * from SYSTEM.TWEETS" 
3. "select * from \"TWEETS\" 
4. "select * from \"SYSTEM\".\"TWEETS\"" 

創建表的命令,

CREATE COLUMN TABLE TWEETS(
    "ID" INTEGER NOT NULL, 
    "USER_NAME" NVARCHAR(100), 
    "CREATED_AT" DATE, 
    "TEXT" NVARCHAR (140), 
    "HASH_TAGS" NVARCHAR (100), 
    PRIMARY KEY("ID") 
    ); 

能否請你幫我在這裏找出問題? 謝謝!

+0

從你的代碼的原因並不明顯。我建議跟蹤JDBC驅動程序以查看實際傳輸到HANA的命令。 –

回答

0

按照提供的文檔here,我們可以觀察到您在SAP JDBC連接字符串中使用的端口存在問題。

該端口應該是3 <實例號> 15;例如,如果實例爲00,則爲30015.

通過以上說明,對連接字符串進行必要的更改應該可以解決問題。

更正連接字符串現在是以下(基於問題提供的參數):

String url = "jdbc:sap://myhost:30015/?databaseName=TWEETS&user=MYUSER&password=PASSWORD"; 

希望這有助於!

+0

我的實例號是90.所以,我使用的是39015端口而不是30015.我嘗試使用上面的連接字符串,但仍然發生相同的異常。 – Michael

0

嘗試

"select * from SYSTEM.\"TWEETS\"" 
+0

這不提供問題的答案。一旦你有足夠的[聲譽](https://stackoverflow.com/help/whats-reputation),你將可以[對任何帖子發表評論](https://stackoverflow.com/help/privileges/comment);相反,[提供不需要提問者澄清的答案](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- I-DO-代替)。 - [來自評論](/ review/low-quality-posts/16823470) – user1438038