【问题标题】:ERROR Database:40 - java.sql.SQLNonTransientConnectionException错误数据库:40 - java.sql.SQLNonTransientConnectionException
【发布时间】:2019-12-20 16:15:53
【问题描述】:

我使用 database.properties 来保存我的数据库信息。但是,每次运行代码时都会弹出此错误。我不知道数据库的哪一部分出错了。请帮忙!

host: 127.0.0.1
port: 3306
database: spider
username: root
password: !QAZxsw2
driver: com.mysql.cj.jdbc.Driver
drivertype: MYSQL

错误数据库:40 - java.sql.SQLNonTransientConnectionException: 由于基础异常,无法加载连接类: com.mysql.cj.exceptions.WrongArgumentException:无法解析 主机:端口对 '127.0.0.1:3306;databaseName=spider;user=root;password=!QAZxsw2;serverTimezone=UTC&amp'。

【问题讨论】:

  • 我使用这个字符串String connString = String.format("jdbc:%s://%s:%s;databaseName=%s;user=%s;password=%s;serverTimezone=UTC&amp", drivertype, host, port, database, username, password);作为我的连接字符串。
  • @user7294900 google了一下,加上&amp的意思是“有多个参数需要用&分隔,但是&改成&”
  • &amp 不是 & 并且如果后面没有其他参数则无关紧要。您应该向问题添加更多信息
  • @user7294900 那么,我的 database.properties 文件有什么问题吗?我认为错误是因为文件。

标签: mysql sql jdbc


【解决方案1】:

您似乎对 URL 使用 SQL Server JDBC 驱动程序语法,而您使用的是 MySQL JDBC 驱动程序。

参见MySQL Connector/J 8, Connection URL Syntax,连接 MySQL 的 URL 是:

jdbc:mysql://127.0.0.1:3306/spider?user=root&password=!QAZxsw2&serverTimezone=UTC

请注意,我还删除了您拥有的 &,它在 URL 中没有位置,除非您将其放入 XML 并希望在键值对之间转义 &

给定 JDBC URL 的语法是未定义的(除了 jdbc:<sub-protocol>: 前缀,你不能像你正在做的那样尝试动态构造它并期望它在不同的驱动程序上工作。每个驱动程序都有自己的语法,虽然有语法上有相当多的重叠,每个都有自己的特质(如果不是完全古怪的语法)。相反,对整个 URL 使用单个属性,或使用特定于驱动程序的策略。

【讨论】:

    【解决方案2】:

    发布此问题后,我发现我的连接字符串错误。 jdbc:mysql://localhost:%s/%s?serverTimezone=UTC&"+"user=%s&password=%s应该是mysql的那个url模式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-16
      • 1970-01-01
      • 1970-01-01
      • 2019-06-10
      • 1970-01-01
      相关资源
      最近更新 更多