【问题标题】:Could not create connection to database (ColdFusion)无法创建与数据库的连接 (ColdFusion)
【发布时间】:2018-04-30 18:53:10
【问题描述】:

我正在通过 ColdFusion 创建一个简单的 CRUD 应用程序。我将前往http://localhost:8600/CFIDE/administrator/index.cfm 的 ColdFusion 管理员面板,并添加一个“新数据源”。但我收到以下错误:

Connection verification failed for data source: dsnMyVariable
java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. 
The root cause was that: java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.

【问题讨论】:

  • 您对 DSN 使用了哪些设置(数据库、服务器、端口、用户名……)。数据库和CF在同一台服务器上吗?
  • 我使用标准设置(MySQL 服务器、localhost、3306、root)。相同的 IP 地址,但不同的端口。 localhost:8600 上的 CF 和 localhost:3306 上的 DB。
  • 您是否设置了用户连接到 MySQL?权限是否正确?您的 CF DSN 设置是否在端口 3306 上查找 MySQL?使用正确的 JDBC 字符串?
  • 不,我没有设置用户,我使用已经存在的“root”,我想“root”对我的问题有权限。我的 CF DSN 设置在端口 3306 上查找 MySQL。在哪里可以找到 jdbc 字符串?

标签: mysql coldfusion coldfusion-2016


【解决方案1】:

更新:

安装 MySQL 8 后,我在创建 DSN 时收到了完全相同的错误消息。这似乎是与 MySQL 8 的兼容性问题。检查System Support Matrix for ColdFusion 2016 仅显示 MySQL 5.7,因此 MySQL 8 可能不支持或不兼容内置驱动程序。

安装newer JDBC driver 似乎可以解决问题并允许 DSN 进行验证。

  1. 停止 ColdFusion 2016 Windows 服务
  2. https://dev.mysql.com/downloads/connector/j/ 下载最新的 JDBC 驱动程序。目前最新版本为 v8.0.11。
  3. 解压并复制新的驱动程序jar (mysql-connector-java-8.0.11.jar) 到目录{cf2016_root}\wwwroot\WEB-INF\lib
  4. 找到 MySQL 驱动程序 jar 并将其重命名,使其没有 .jar 扩展名。例如,将 mysql-connector-java-5.1.39-bin.jar 重命名为 mysql-connector-java-5.1.39-bin.jar.old。 (实际位置和版本号可能有所不同,但通常位于{cf2016_root}\lib\

  5. 重启 ColdFusion 2016 Windows 服务

最后,使用 Driver Type = Other 创建一个新的 DSN 并输入以下内容。只需将“YourDatasourceName”和“YourDatabaseName”替换为正确的值即可。

  • CF 数据源名称:YourDatasourceName
  • JDBC 网址: jdbc:mysql://127.0.0.1:3306/YourDatabaseName?tinyInt1isBit=false&
  • 驱动类:com.mysql.jdbc.Driver
  • 驱动名称:com.mysql.jdbc.Driver
  • 用户名:root
  • 密码:(your password)

没有看到您的真实 DSN 设置,这只是一个猜测,但是...验证 Server 设置是否正确。由于 MySQL 与 CF 在同一台机器上运行,请输入 localhost127.0.0.1

我确认输入 NotARealServerName 之类的无效服务器名称(网络上没有该名称的计算机)会产生与您在尝试验证时看到的相同的错误CF11中的DSN。

一旦你让它工作,我强烈推荐creating a separate user account,授予适当的权限,并将其与 CF DSN(而不是“root”)一起使用。

【讨论】:

    【解决方案2】:

    问题在于版本 mysql connector java
    我第一次使用最新版本Connector/J 8.0.11,需要使用旧版本Connector/J 5.1.46。 Ageax 的建议对我帮助很大!
    同时使用 MySQL 5Other 驱动程序。

    【讨论】:

    • 很高兴你终于让事情正常了 ​​=) 奇怪的是 v8.0.11 不适用于 MySQL 8。我没有尝试 5.1.46,只有 5.1.39 无法使用 MySQL8 .合适的司机让一切变得不同!请注意“MySQL5”标签具有误导性。它只是一个硬编码标签,因此 CF 将使用它在 CF 类路径 5.x、8.x 中找到的任何版本的驱动程序;-)
    • 是的,你是对的。对于任何阅读的人,我可以确认它也适用于 5.1.46。 (在我的安装中,它也适用于 8.0.11,但请使用适合您的两者中的任何一个)。
    猜你喜欢
    • 2015-09-22
    • 1970-01-01
    • 1970-01-01
    • 2019-10-17
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 2014-03-06
    相关资源
    最近更新 更多