密码中带有分号的 ms sql 连接字符串无法连接

问题描述

我正在使用运行时 3.9.4EE 的 anypoint studio 6.6.8。 我有以下 mssql 通用数据库连接字符串。

jdbc:sqlserver://ABC.org:59000;databaseName=master;username=nrp;password=*37n%3b#wu;5r:;_1z~(f{1y{j

测试连接给我以下错误

Test connection Failed:
org.mule.module.db.internal.domain.connection.ConnectionCreationException: Cannot get connection for URL jdbc:sqlserver://ABC.org:59000;databaseName=master;username=nrp;password=<<credentials>>;5r:;_1z~(f{1y{j: The connection string contains a badly formed name or value

PS:我的密码中有 2 个分号

我之前曾多次看到这里提出过类似的问题,因此我的问题可能看起来是重复的。 但是我尝试了回复中给出的以下解决方案。他们都没有工作。如果您有任何替代解决方案,请告诉我。

  1. 用单引号将密码括起来。
  2. 在;前加\
  3. 用双引号或 {} 将密码括起来
  4. 我不是管理员,因此删除;从密码无法完成。

解决方法

连接字符串的格式为 JAVA JDBC URL。它类似于一个普通的 URL。 URL 中不允许使用许多字符,必须使用 URL encoding 方法进行编码。尝试对整个 URL 使用 URL 编码。您可以使用大多数语言或在线页面执行此操作,但您可能希望避免使用包含密码等敏感信息的公共页面。

,

谢谢@aled

所以 {} 确实有效。我这样做是错误的。 我正在对密码进行加密,然后将 {} 连接到通过连接字符串传递的 b4 解密密码。

有效的是我先将密码包含在 {} 中,然后对其进行加密。