【发布时间】:2019-08-03 19:23:07
【问题描述】:
我正在尝试使用 TNS 连接到 Oracle 数据库。
问题是 TNS 别名包含点,所以当我这样指定 url 时:
jdbc:oracle:thin:@TNS.ALIAS
我有……
oracle.net.ns.NetException: Invalid connection string format, a valid format is: "host:port:sid"
...在创建连接期间。
我知道点字符是个问题,因为在将其从tnsnames.ora 文件中删除后,与数据库的连接工作正常。
我的问题是 - 是否有可能以某种方式转义点字符?也许可以设置一些连接参数以允许别名中的点字符?我想避免从tnsnames.ora 中删除点,因为我是从外部源获取文件。
以下是我已经尝试过的选项,它们给了我同样的错误:
jdbc:oracle:thin:@"TNS.ALIAS"
jdbc:oracle:thin:@\"TNS.ALIAS\"
jdbc:oracle:thin:@`TNS.ALIAS`
jdbc:oracle:thin:@TNS\.ALIAS - this one is not compiling
jdbc:oracle:thin:@TNS\\.ALIAS
jdbc:oracle:thin:@TNS.ALIAS
jdbc:oracle:thin:@TNS\".\"ALIAS
jdbc:oracle:thin:@TNS%2eALIAS
以下是oracle.net.ns.NetException: could not resolve the connect identifier 产生的选项:
jdbc:oracle:thin:@TNSALIAS
jdbc:oracle:thin:@TNS-ALIAS
jdbc:oracle:thin:@TNS_ALIAS
附加上下文:
- 我正在尝试创建 Java 的
DataSource(OracleDataSource严格)在 Scala 中(它是 Play 框架 - 但我没有使用 Play 的 创建数据库连接的方式 - 我是手动创建的) - 我有使用完全相同的
tnsnames.ora文件的 SQL Developer,并且它在那里工作 - 我们的 C# 应用程序使用完全相同的
tnsnames.ora文件并且它在那里工作(数据源定义如下:<add name="connectionName" connectionString="Data Source=TNS.ALIAS;"/>
【问题讨论】:
-
我不知道答案。但是,如果将 something 括在双引号中会有帮助吗?如
jdbc:oracle:thin:@"tns.alias" -
@Littlefoot 感谢您的建议,但遗憾的是它给出了同样的错误
-
那么,您是否尝试使用
String url = "jdbc:oracle:thin@\"tns.alias\"";转义双引号? -
@MickMnemonic - 是的,我也尝试了你的建议 - 错误是一样的
-
你需要将
System.setProperty("oracle.net.tns_admin", "C:\\app\\product\\12.2.0\\client_1\\network\\admin");设置为tnsnames.ora的位置
标签: java oracle scala jdbc tnsnames