【问题标题】:SAP HANA Could not find table/viewSAP HANA 找不到表/视图
【发布时间】:2017-07-24 06:36:43
【问题描述】:

我正在尝试连接在 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 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")
    );

您能帮我找出这里的问题吗? 谢谢!

【问题讨论】:

  • 从您的代码来看,原因并不明显。我建议跟踪 JDBC 驱动程序以查看实际传输到 HANA 的命令。
  • 这个运气好吗?同样的问题...

标签: java jdbc sap hana


【解决方案1】:

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

端口应该是315;例如,如果实例为 00,则为 30015。

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

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

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

希望这会有所帮助!

【讨论】:

  • 我的实例号是 90。所以,我使用的是 39015 端口而不是 30015。我尝试了上面的连接字符串,但仍然出现同样的异常。
【解决方案2】:

试试

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

【讨论】:

    猜你喜欢
    • 2013-03-01
    • 1970-01-01
    • 2015-06-21
    • 2020-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多