无法创建与数据库的连接 (ColdFusion)

Could not create connection to database (ColdFusion)

我正在通过 ColdFusion 创建一个简单的 CRUD 应用程序。我将前往 http://localhost:8600/CFIDE/administrator/index.cfm 的 ColdFusion 管理员面板并添加一个 "New Data Source"。但是我收到以下错误:

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.

更新:

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

安装 newer JDBC driver 似乎解决了问题并允许 DSN 验证。

  1. 停止 ColdFusion 2016 Windows 服务
  2. https://dev.mysql.com/downloads/connector/j/ 下载最新的 JDBC driver。目前最新版本为v8.0.11.
  3. 解压并复制新的 driver jar (mysql-connector-java-8.0.11.jar) 到目录 {cf2016_root}\wwwroot\WEB-INF\lib
  4. 找到 old MySQL driver 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 创建一个新的 DSN Type = Other 并输入以下内容。只需将 "YourDatasourceName" 和 "YourDatabaseName" 替换为正确的值即可。

  • CF 数据源名称:YourDatasourceName
  • JDBCURL: jdbc:mysql://127.0.0.1:3306/YourDatabaseName?tinyInt1isBit=false&
  • Driver Class: com.mysql.jdbc.Driver
  • 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")一起使用。

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