Slick 3.4.1连接MySQL报错及网络连通性问题求助
问题解决指南:Slick 3.4.1 + Scala 2.12 连接 MySQL 报错处理
一、关于 ping 127.0.0.1:3306 报错的问题
- 错误原因:
ping命令基于ICMP协议,不支持直接指定TCP端口号,所以会出现「Name or service not known」的错误,这和MySQL是否运行没有直接关联。 - 正确检查TCP端口连通性的方式:
- 使用
telnet:telnet 127.0.0.1 3306 - 使用
nc(netcat):nc -zv 127.0.0.1 3306
- 使用
- 确认MySQL服务状态:
- Linux系统:执行
systemctl status mysql,查看服务是否处于active (running)状态 - Windows系统:打开「服务」列表,找到MySQL服务,确认其状态为「正在运行」
- Linux系统:执行
二、关于 org.h2.Driver does not know how to handle URL jdbc:mysql://localhost:3306/Test 的问题
- 核心问题:驱动类与JDBC URL不匹配——代码里配置了H2数据库的驱动,但使用的是MySQL的JDBC连接地址,两者完全不兼容。
- 解决步骤:
- 替换驱动类:把配置中的
org.h2.Driver改成MySQL的驱动类:- MySQL 8.x版本用
com.mysql.cj.jdbc.Driver - MySQL 5.x版本用
com.mysql.jdbc.Driver
- MySQL 8.x版本用
- 添加正确的依赖:在
build.sbt中引入MySQL JDBC驱动和Slick的MySQL支持:libraryDependencies ++= Seq( "com.typesafe.slick" %% "slick" % "3.4.1", "com.typesafe.slick" %% "slick-hikaricp" % "3.4.1", // 连接池依赖 "mysql" % "mysql-connector-java" % "8.0.33" // 版本需匹配你的MySQL服务 ) - 修正Slick的数据库Profile:确保代码中引入并使用MySQL的Profile:
import slick.jdbc.MySQLProfile.api._ val db = Database.forConfig("mysqlDB") // 对应配置文件中的MySQL参数节点 - 配置文件示例(application.conf):
mysqlDB { dataSourceClass = "com.zaxxer.hikari.HikariDataSource" properties { driver = "com.mysql.cj.jdbc.Driver" url = "jdbc:mysql://localhost:3306/Test?useSSL=false&serverTimezone=UTC" user = "你的MySQL用户名" password = "你的MySQL密码" } numThreads = 10 }
- 替换驱动类:把配置中的
内容的提问来源于stack exchange,提问作者StoCa_overflow
相关产品推荐
相关产品推荐

