"Database not found" 尝试使用 JDBC 连接到 Hana 时出错
"Database not found" error while trying to connect to Hana with JDBC
这很好用:
GRANT SELECT ON SCHEMA DB1 TO USER1;
但是当我尝试在指定数据库的 SQuirreL 中连接时:
我收到以下错误:
class com.sap.db.jdbc.exceptions.JDBCDriverException: SAP DBTech JDBC:
Cannot connect to jdbc:sap://10.194.19.20:39013/ [SAP DBTech JDBC:
[2]: general error: database 'DB1' does not exist].
如果我尝试在不指定数据库的情况下进行连接,它工作正常并且我可以 运行 在 DB1 上毫无问题地进行选择。但我需要连接到 Hana,并在 URL 中指定数据库。有什么问题以及如何解决?
代替databaseName
,使用currentSchema
"jdbc:sap://10.194.19.20:39013?currentSchema=DB1"
数据库和架构是实例或租户上的两个不同对象。
在数据库中,数据库用户有自己的对象,这些对象包含在模式中
所以每个数据库用户都可以有一个单独的模式。
模式对象主要用于安全性。
在您的示例代码中,您正在向用户 USER1 授予或允许对 DB1 模式中的对象执行 SELECT 命令。 (所以USER1可以查询用户DB1的对象)
在您与我们共享的数据库连接中,您需要提供数据库名称,而不是架构用户。
您可以在 SAP GUI 上使用 系统 > 状态 菜单选项找到数据库名称。
您将看到数据库数据部分。使用“名称”文本框中的值。
通常,每个连接用户都映射到默认数据库用户(因此映射到数据库上的默认架构)
这很好用:
GRANT SELECT ON SCHEMA DB1 TO USER1;
但是当我尝试在指定数据库的 SQuirreL 中连接时:
我收到以下错误:
class com.sap.db.jdbc.exceptions.JDBCDriverException: SAP DBTech JDBC: Cannot connect to jdbc:sap://10.194.19.20:39013/ [SAP DBTech JDBC: [2]: general error: database 'DB1' does not exist].
如果我尝试在不指定数据库的情况下进行连接,它工作正常并且我可以 运行 在 DB1 上毫无问题地进行选择。但我需要连接到 Hana,并在 URL 中指定数据库。有什么问题以及如何解决?
代替databaseName
,使用currentSchema
"jdbc:sap://10.194.19.20:39013?currentSchema=DB1"
数据库和架构是实例或租户上的两个不同对象。
在数据库中,数据库用户有自己的对象,这些对象包含在模式中 所以每个数据库用户都可以有一个单独的模式。 模式对象主要用于安全性。 在您的示例代码中,您正在向用户 USER1 授予或允许对 DB1 模式中的对象执行 SELECT 命令。 (所以USER1可以查询用户DB1的对象)
在您与我们共享的数据库连接中,您需要提供数据库名称,而不是架构用户。
您可以在 SAP GUI 上使用 系统 > 状态 菜单选项找到数据库名称。 您将看到数据库数据部分。使用“名称”文本框中的值。
通常,每个连接用户都映射到默认数据库用户(因此映射到数据库上的默认架构)