HANA 找不到表/视图

问题描述 投票:0回答:3

我正在尝试连接在 Google Cloud Platform 中运行的 HANA 数据库。这是我的 Java 代码,

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();
    }

TWEETS
表存在于
SYSTEM
模式下,我可以使用HANA Studio(Eclipse插件)查询
TWEETS
表。但是,当我尝试从 java 代码查询时,会发生以下异常。

com.sap.db.jdbc.exceptions.JDBCDriverException:SAP DBTech JDBC:[259](位于 14):无效的表名称:在架构系统中找不到表/视图推文:第 1 行第 15 行(位于 14 处)

在 com.sap.db.jdbc.exceptions.SQLExceptionSapDB.createException(SQLExceptionSapDB.java:334)

在 com.sap.db.jdbc.exceptions.SQLExceptionSapDB.generateDatabaseException(SQLExceptionSapDB.java:165)

在 com.sap.db.jdbc.packet.ReplyPacket.buildExceptionChain(ReplyPacket.java:104)

在 com.sap.db.jdbc.ConnectionSapDB.execute(ConnectionSapDB.java:1110)

在 com.sap.db.jdbc.ConnectionSapDB.execute(ConnectionSapDB.java:854)

在 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")
    );

您能帮我解决这里的问题吗? 谢谢!

java jdbc hana
3个回答
0
投票

按照此处提供的文档,我们可以观察到您在 SAP JDBC 连接字符串中使用的端口存在问题。

端口应为3

15;例如,如果实例为 00,则为 30015。< instance number>

根据上述解释,对连接字符串进行必要的更改应该可以解决问题。

更正的连接字符串现在如下(基于问题中提供的参数):

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

希望这有帮助!


0
投票
尝试

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

0
投票
我假设用户“MYUSER”需要读取架构的权限,并且您已使用 HANA SQL 控制台确认了这一点。 从 JDBC 和 SQL 控制台运行以下命令,看看返回的 CURRENT_SCHEMA 值是什么? JDBC 和 SQL 控制台必须相同。

select current_schema from dummy;
如果 JDBC 返回一些其他值,则首先使用 

切换到正确的模式

set schema schema_having_TWEET_table;
现在运行实际查询。如果还是失败,分享一下最新的错误日志。
根据以上日志-

表名称:在模式 SYSTEM 中找不到表/视图推文:第 1 行第 15 行(位于 14 位置)

您似乎使用了错误的模式。

© www.soinside.com 2019 - 2024. All rights reserved.