ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

MySQL驱动下载与配置:Jar包与ODBC驱动权威指南

MySQL驱动下载与配置:Jar包与ODBC驱动权威指南 1. 别去搜索引擎乱找官网才是驱动唯一的“官方正确来源”先聊点实际的。很多朋友一装 MySQL 驱动第一反应就是去搜索引擎搜“mysql 驱动 jar 包下载”然后点进那些下载站。这些站点的按钮套路多得要命要么是假按钮、要么是捆绑下载器十个里有八个会把你的电脑搞得乱七八糟。我见过不止一个同事在公司电脑上装了带捆绑的驱动下载器结果整台机器连 IDE 都打不开了。咱们做开发、做运维在这个上面折腾纯粹是浪费时间。MySQL 官方提供的驱动其实就两大类面向 Java 应用的 JDBC 驱动也就是通常说的 jar 包驱动官方叫 Connector/J。面向 Windows 等平台的 ODBC 驱动官方叫 Connector/ODBC适合在 Excel、Access、C、Power BI 等工具里直接连接 MySQL。之所以必须推荐从官网下载一是能保证你拿到的是最完整的正式版本二是不容易碰到恶意修改过的包三是版本对得上号。网上很多个人转存的 jar 包版本名看起来一样但里面文件不全甚至有些是拿旧版本改名的。数据库驱动的安全问题不是儿戏一旦驱动被植入恶意代码你的数据连接就等于裸奔。所以这篇教程的目的很直接把你带到 MySQL 官网下载页面让你清楚地知道每一步该点什么、该选什么配置、下载完后怎么用。无论你是写 Java Web 项目的、还是用 Excel 做数据报表的都能对照着完成。在正式开始之前我需要先点清楚一个核心概念MySQL 驱动按用途划分对应不同的开发场景。jar 包驱动面向 Java 生态ODBC 驱动面向 Windows 生态。两者不冲突但绝对不能混用。下面我会把两条线分别讲透。2. 下载前必须搞清楚的 3 个问题2.1 现在的 MySQL 驱动分几类各自适合什么场景先把“驱动”这个词掰开。MySQL 驱动不是一个文件打天下官方维护的驱动至少有以下几类驱动名称面向平台/语言使用场景Connector/J (JDBC)Java 全平台Java Web 项目、Spring Boot、Kotlin 等 JVM 语言Connector/ODBCWindows / Linux / macOSExcel 连接、Access、C、Python (pyodbc) 、Power BI 等Connector/PythonPythonPython 程序连接 MySQL官方推荐但不少人仍用 PyMySQLConnector/NETC# / .NETC# WinForm、ASP.NET 项目Connector/C / CC/C需要自己封装数据库访问的程序从你标题里的热搜词看“jar包驱动”和“ODBC”正是大家集中纠结的两个点。所以我把重点放在这两类上其余的会顺带点一下保证你以后遇到相关需求时知道还有别的选择。2.2 Jar 包驱动和 ODBC 驱动到底有什么区别这个区别用一句话说清jar 包驱动是 Java 程序连接 MySQL 用的中间桥梁它遵循 JDBC 规范以 .jar 文件形式存在ODBC 驱动则是 Windows也包括其他系统通用的数据库接口任何支持 ODBC 的软件都能通过它访问 MySQL。打个比方。JDBC 驱动像一条专为 Java 程序修的公路Java 程序只需要知道 JDBC 接口怎么调用驱动负责在后台完成和 MySQL 的通信。ODBC 驱动则像一条公共公路不管你是 Excel、还是 C 写的程序只要你的工具支持 ODBC 标准就能用这条公路连接到 MySQL。所以这个问题的回答其实很简单如果你在写 Java 代码老老实实用 jar 包驱动。如果你是想让 Excel 直接读取 MySQL 数据或者你的程序是用 C 写的那么 ODBC 驱动才是你要的。千万别试图在 Java 项目里导入一个 ODBC 驱动也不要在 Excel 里找 jar 包。这个方向错了后面全是白忙活。2.3 版本选择和 MySQL 服务端版本的对应关系版本对齐是很多人忽略的坑。MySQL 驱动的版本号和 MySQL 服务器版本号并不是必须完全一致但你需要关注驱动版本对服务器版本的最低要求和支持范围。举个例子MySQL 8.0 的服务器用 MySQL Connector/J 5.1.49 也是能连的但官方推荐使用 8.x 版本的驱动因为旧驱动在新认证插件caching_sha2_password上会有兼容问题。相反MySQL 5.7 的服务器你拿最新的 Connector/J 8.4 去连通常也没问题驱动会做版本适配。MySQL 服务器版本推荐驱动版本说明5.6 / 5.7Connector/J 5.1.x 或 8.0.x8.0.x 也兼容但 5.1.x 更稳妥8.0 / 8.4 / 9.xConnector/J 8.x必须使用 8.x因为默认认证插件不同5.6 / 5.7Connector/ODBC 5.3.x老版本 ODBC 对接古老认证更省心8.0 / 8.4Connector/ODBC 8.x对应 caching_sha2_password 认证ODBC 驱动其实更加严格。MySQL 8.0 服务端默认使用 caching_sha2_password 加密认证方式老版本的 ODBC 驱动5.3 及之前不一定支持这种新认证。如果连接时报“Authentication plugin caching_sha2_password cannot be loaded”那基本就是驱动版本太老。博主实操心得版本选择不要贪新也不要贪旧我自己的经验是如果是在生产环境驱动版本选择要跟着服务器版本来选择官方标记为 GAGeneral Availability的版本不要把 Alpha、Beta 版本用在生产的工程项目里。很多人喜欢下载最新版但最新版很可能有一些你没预料到的兼容性问题。宁可选择一个已经发布半年以上、大量人验证过的稳定版本。还有一点下载时记得看驱动的发布日期和对应服务器版本。官方网站的下载页面上每个驱动版本都会列出支持的 MySQL Server 版本范围这个信息是权威的下载前花十秒钟看一眼能省掉后面一小时的排查时间。3. Jar 包驱动Connector/J下载完整流程3.1 官网下载页面的正确进入方式与界面解读进入官网的方法我再说一遍不要通过搜索引擎直接在浏览器地址栏输入 MySQL 官方下载地址https://dev.mysql.com/downloads/。这一点值得重复三次因为很多人搜出来的“官网”其实是个套壳下载站。认准 dev.mysql.com 这个域名才是真正的开发者社区站点。进入页面后你会看到页面中间有个大大的 MySQL Community (GPL) Downloads 区域里面列出了 MySQL 相关的各种下载项包括 MySQL Community Server、MySQL Workbench、MySQL Shell 等。不要迷茫你需要的驱动就在这个页面里。找到页面上的“Connectors”栏目点进去。这里会列出所有连接器的下载链接Connector/J、Connector/ODBC、Connector/Python、Connector/NET 等。点击 Connector/J 这一行就能进入到 jar 包驱动的下载专区。3.2 选择平台、版本与文件类型的完整步骤进入 Connector/J 下载页面后你会看到一个下拉框默认选项可能是“Select Operating System”。这里很多人会卡住——它是让你选操作系统平台的。如果你开发的是 Java 项目而且用的不是跨平台部署的 Docker 镜像这里其实选哪个都不影响 jar 包本身因为 jar 包是纯 Java 字节码不绑定操作系统。但为了下载页面能列出文件列表你总得选一个。一般选“Platform Independent”这个选项。选完之后页面下方会出现一个文件列表里面有两个压缩包.tar.gz后缀的压缩包适合 Linux 和 macOS 环境。.zip后缀的压缩包适合 Windows 环境。名字里带有nojava标记的压缩包说明里面不包含 Java 代码示例和文档体积更小只保留驱动核心 jar 文件。如果你只是想快速拿到 jar 包引入项目可以直接下载nojava版本省去解压后还要从一堆示例代码里翻 jar 的麻烦。还有一个文件是.tgz本质和.tar.gz一样只是扩展名压缩方式略有区别都是 Unix 类的归档文件不用太纠结。3.3 下载完成后 jar 包文件在哪里怎么导入项目下载完成后解压压缩包你会看到一个名为mysql-connector-j-8.x.x.jar的文件旧版本可能叫mysql-connector-java-5.1.x.jar。这个就是你需要的驱动核心文件。把 jar 包引入项目根据不同构建方式有三种常用手段如果使用 Maven直接在pom.xml里添加依赖坐标推荐用 Maven 中央仓库的依赖比手动下载更优雅也方便版本管理dependency groupIdcom.mysql/groupId artifactIdmysql-connector-j/artifactId version8.4.0/version /dependency如果使用 Gradle在build.gradle中加入implementation com.mysql:mysql-connector-j:8.4.0如果是传统的 IDEV 工程比如 Eclipse 或 IntelliJ IDEA 里创建的普通 Java 项目直接把下载到的 jar 包复制到项目中的lib目录然后右键 jar 包选择 “Add as Library”IDEA 的操作方式或 Build Path - Add to Build PathEclipse 的操作方式。这里我要提一个很多人踩过的坑不要只把 jar 包拖到项目目录下就完事一定要在构建路径中引入该 jar 包。否则 IDEA 里可能自动识别了但一到命令行打包运行时就会报ClassNotFoundException: com.mysql.cj.jdbc.Driver。3.4 验证驱动是否生效的标准代码片段驱动导入项目后用一段最简单的代码验证一下看数据库是否能正常连接。下面这段代码我用了很多年几乎没有失败过import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class MySQLConnTest { public static void main(String[] args) { String url jdbc:mysql://localhost:3306/test_db?useSSLfalseserverTimezoneAsia/Shanghai; String user root; String password your_password; try { Class.forName(com.mysql.cj.jdbc.Driver); Connection conn DriverManager.getConnection(url, user, password); System.out.println(数据库连接成功 conn.getCatalog()); conn.close(); } catch (ClassNotFoundException e) { System.out.println(找不到驱动类请检查 jar 包是否导入正确); e.printStackTrace(); } catch (SQLException e) { System.out.println(数据库连接失败请检查 URL、账号密码或网络); e.printStackTrace(); } } }注意 URL 里面serverTimezoneAsia/Shanghai这个参数。MySQL 8.0 及以上版本的驱动要求显式指定时区否则会报The server time zone value Öйú±ê׼ʱ¼ä is unrecognized之类的错误。这个错误曾经坑掉了不知道多少新手甚至有些老手换版本后也会踩到。博主实操心得驱动类名不是随随便便写的新旧版本驱动的类名不一样这也是常见报错来源之一MySQL Connector/J 5.x 的驱动类名是com.mysql.jdbc.DriverMySQL Connector/J 8.x 的驱动类名是com.mysql.cj.jdbc.Driver写Class.forName的时候用错类名会直接报ClassNotFoundException。如果你用的是 8.x 驱动却写 5.x 的类名它找不到类。如果你在 8.x 下写 5.x 的类名有时候反而会成功因为 8.x 为了向后兼容还保留了旧类名但会打印一条警告信息提示你已经过时了。我的建议是新项目一律用新类名不要给自己留这种兼容性的隐患。4. ODBC 驱动下载完整流程4.1 谁需要 ODBC 驱动常见使用场景盘点ODBC 驱动在开发圈子里没有 jar 包驱动那么“程序员味”但它是个威力巨大的工具。你不需要写代码、不需要引入类库只要在系统里装好 ODBC 驱动配置好数据源然后任何支持 ODBC 的软件都能直接读取 MySQL 数据。我见过的典型使用场景有数据分析人员用 Excel 直接连接 MySQL做数据透视表和报表不需要把数据导出成 CSV 再导入。用 Access 连接 MySQL把 Access 当前端的表单和报表工具MySQL 当后端数据库。用 Python 的 pyodbc 库连接 MySQL 做数据处理。用 C 写的 Windows 桌面程序不想自己封装 TCP 协议直接通过 ODBC API 访问数据库。Power BI / Tableau 等 BI 工具作为数据源连接 MySQL。这些场景下ODBC 驱动是你唯一的桥梁。它把 MySQL 的通信协议封装成符合 ODBC 标准的接口让上面所有工具都能用一套标准化的方式去访问。4.2 官网 ODBC 驱动下载步骤操作系统选择与安装包位数的关键细节ODBC 驱动的下载页面同样是https://dev.mysql.com/downloads/connector/odbc/。进入后你会看到操作系统的下拉框这次选择操作系统是真的有影响因为 ODBC 驱动是编译好的二进制程序不是 Java 那种跨平台字节码。选择你的操作系统后比如 Windows页面会列出两个安装包一个 32 位版本的 .msi 安装包一个 64 位版本的 .msi 安装包这里千万要注意位数的问题。ODBC 数据源管理器也有 32 位和 64 位之分很多软件是 32 位版本的比如旧版的 Office ExcelOffice 2010 之前、或者某些 32 位开发的 C 程序它们只能调用 32 位 ODBC 驱动。如果你只安装了 64 位驱动这些 32 位程序在配置数据源时会发现找不到驱动。我的建议是如果你的操作系统是 64 位的 Windows且使用场景不明确那就两个版本的驱动都装上反正它们可以共存不会冲突。这样既能满足 64 位软件的需求也能兼容 32 位的老软件。4.3 Windows 下 ODBC 驱动的安装过程与数据源配置全程安装过程本身是标准的 Windows 软件安装流程双击.msi文件一路点 Next接受许可协议选择安装路径安装完成后不需要重启电脑。安装完成后重头戏来了配置 ODBC 数据源。很多新手装好驱动后发现还是连不上数据库原因就是没有在系统里配置数据源。Windows 10/11 下打开 ODBC 数据源管理器的方法按Win R键输入odbcad32.exe并回车64 位系统默认打开的是 64 位版本。如果你需要配置 32 位数据源那要运行C:\Windows\SysWOW64\odbcad32.exe。这个路径是不是很反直觉64 位系统里 SysWOW64 目录下放的反而是 32 位工具为的是兼容老程序。注意别搞混。打开数据源管理器后选择“系统 DSN”或“用户 DSN”标签页——推荐选择“系统 DSN”因为这个数据源对整个系统的所有用户都可用而不会出现你在自己账号下配置好了、换一个账号又找不到的情况。点击“添加”弹窗里选择“MySQL ODBC 8.3 Unicode Driver”然后点击“完成”就会出现 MySQL 连接配置窗口。在这里填写Data Source Name数据源名称自己取一个友好的名字比如LocalMySQL。Description随便填或者不填。TCP/IP Server填127.0.0.1或实际 MySQL 服务器的 IP。PortMySQL 端口默认 3306除非你改过。UserMySQL 用户名比如root。Password对应的密码。Database想要默认连接的数据库可以暂时留空连接后再选。填完后点击“Test”按钮如果显示 “Connection successful”说明配置成功点击确定保存。4.4 利用 ODBC 驱动在 Excel 里直接读取 MySQL 数据的实操演示数据源配置好后怎么在 Excel 里验证呢我演示一个最常见的场景Excel 直接连接 MySQL 并拉取数据。打开 Excel推荐使用 2016 或更新版本操作路径略有差异但原理一样点击“数据”选项卡在“获取外部数据”区域选择“自其他来源”然后选择“来自 ODBC”或者“自数据连接向导”。在弹出的窗口里选择你刚才配置好的数据源名称LocalMySQL点击“连接”。如果数据源配置正确Excel 会提示你选择要导入的表或视图。选中你要的数据表点击“确定”然后选择数据要存放的位置Excel 就会把 MySQL 里的数据拉取到工作表中并且建立连接。后续你在 Excel 里刷新数据就会从 MySQL 重新拉取一遍。这里有一个实际工作中的细节如果你的 MySQL 表中数据量非常大几十万行以上直接用 Excel 拉全表数据是不现实的Excel 的行数上限是 104 万行左右超过之后数据会被截断。更合理的做法是在“导入数据”窗口里写 SQL 查询语句只提取你需要的字段和行数。例如SELECT id, name, amount, create_time FROM orders WHERE amount 1000 ORDER BY create_time DESC LIMIT 10000;这个查询只拉取 1 万行金额大于 1000 的订单数据既满足分析需求又不会把 Excel 拖死。博主实操心得测试连接成功但业务程序连接失败的多半是 DSN 位数问题我遇到过不少情况ODBC 驱动装好了在 64 位数据源管理器里测试连接也成功了但是某个老软件就是连不上数据库甚至软件内部配置数据库时根本看不到你创建的 DSN。那时候排查了很久最后发现原因那个老软件是 32 位程序它去找数据源时找的是 32 位 ODBC 数据源管理器里的配置。而我们在 64 位管理器里配置的 DSN在 32 位程序眼里根本不存在。解决办法很简单运行 32 位数据源管理器把同样的数据源再配置一遍。两边都配上老程序就能正常工作了。这个经验帮我在朋友的数据库迁移项目里省下了不少时间。5. 驱动连接失败的常见问题与排查手册5.1 Jar 包驱动连接失败的 5 个经典报错与逐条解法这部分我整理了实际工作中见到最多的 jar 包驱动连接问题每条都是真金白银换来的排查经验。报错信息原因解决方法ClassNotFoundException: com.mysql.cj.jdbc.Driverjar 包未正确导入项目构建路径重新检查项目依赖配置Maven 项目确认仓库是否成功下载Access denied for user rootlocalhost用户名密码错误或者该用户名不允许从当前主机连接检查密码大小写确认 MySQL 用户的 host 权限The server time zone value ... is unrecognized驱动版本较新要求显式指定时区URL 后面加serverTimezoneAsia/ShanghaiPublic Key Retrieval is not allowed使用 caching_sha2_password 认证且连接未加密驱动默认不允许获取公钥URL 加参数allowPublicKeyRetrievaltrue开发环境可以用生产环境建议改用 SSLCommunications link failure网络不通或者 MySQL 连接数满了或者 mysql 的 bind-address 配置限制了先用 ping 和 telnet 测试 3306 端口再看 MySQL 的 max_connections第二行的问题里有一种特殊情况MySQL 8.0 默认创建的用户认证插件是caching_sha2_password如果驱动版本太旧小于 5.1.47连认证都无法完成。这时候要么升级驱动要么在建用户时指定mysql_native_password但我不建议降级认证方式因为 caching_sha2_password 要比老的方式安全得多。第四行的问题在开发环境比较高发。你用 root 连本地数据库时连接串没有加 SSL 参数MySQL 8.x 默认用 caching_sha2_password 认证驱动需要先从服务器获取公钥。你需要在连接串上追加allowPublicKeyRetrievaltrueuseSSLfalse。这个参数在生产环境不要随便用因为关闭了 SSL 和公钥获取限制数据会明文传输有被截获的风险。5.2 ODBC 连接失败的常见原因与解决建议ODBC 驱动连接失败和 jar 包驱动不完全一样。因为 ODBC 是通过数据源DSN连接数据库中间多了操作系统这层抽象的配置排查顺序就不一样。我总结了一个排查顺序是从实际工作中提炼出来的第一先确认 MySQL 服务能不能接受本地连接。在 MySQL 命令行工具里执行SELECT 1;能返回正常结果说明服务端没问题。这一步如果失败后面什么都白搭。第二测试 TCP/IP 端口通不通。在命令行执行telnet 127.0.0.1 3306如果你看到黑窗口变空白说明端口通着如果立即提示“无法打开到主机的连接”说明 MySQL 没有监听该端口或者防火墙拦截了。Windows 上有时候还需要在防火墙里单独放行你可以临时把防火墙关掉测试一下通的话再加回防火墙放行规则。第三用 ODBC 数据源管理器自带的 Test 按钮测试连接。这个测试是最直观的它能直接告诉你用户名密码对不对、数据库存在不存在。第四如果 Test 按钮成功但你的程序还是连接失败那么一定是位数问题。回去检查你的程序是 32 位还是 64 位然后去对应位数的 ODBC 管理器里重新配置数据源。第五检查 MySQL 用户连接权限。MySQL 默认的 root 用户在很多安装配置下只允许从本机连接。如果用 ODBC 数据源填的是 MySQL 服务器的 IP但连接的是远程数据库你需要确保 MySQL 里有一个授权用户允许从你的机器连接。如果报Host xxx is not allowed to connect to this MySQL server那就需要在 MySQL 里授权或新建用户CREATE USER analyst% IDENTIFIED BY your_password; GRANT SELECT ON mydb.* TO analyst%; FLUSH PRIVILEGES;这个 SQL 创建了一个任意主机都能连接的 analyst 用户并且只授予了 mydb 库的 SELECT 权限原则是最小权限原则。5.3 字符集乱码问题驱动连接时的 charset 参数配置乱码问题在驱动连接中极其常见。数据库用 UTF-8 存中文结果程序读出来是问号或者写进去变乱码。驱动的连接字符集参数如果不设置MySQL 默认会使用服务端的character_set_server配置而这个值在很多默认安装下是latin1不是utf8mb4。对于 jar 包驱动解决办法是在 JDBC URL 中加上characterEncodingutf8String url jdbc:mysql://localhost:3306/test_db?useSSLfalseserverTimezoneAsia/ShanghaicharacterEncodingutf8;对于 ODBC 驱动在配置数据源时“Connection”选项卡里可以设置 Connection Character Set选择utf8或utf8mb4。这里建议选择utf8mb4因为 MySQL 的 utf8 其实最多存 3 个字节有些特殊字符emoji 和生僻汉字需要 4 个字节用 utf8 字符集存储会报错或乱码。utf8mb4 是 utf8 的超集完全兼容并且支持 4 字节字符是现代 MySQL 应用的标准选择。5.4 驱动版本不兼容引发的隐藏问题从报错到定位版本不兼容不总是直接报错的有时候是“能用但时不时报错”。我遇到过一种情况用 Connector/J 5.1.48 连接 MySQL 8.0 的数据库平时查数据没问题但在执行某些特定 SQL比如新的窗口函数、CTE 语法时会报语法错误。原因很简单服务器的 SQL 解析器支持这些新语法但驱动把 SQL 发送出去时走的还是旧协议在某个环节认不出新语法。这类问题的定位技巧是看报错发生在哪个阶段。如果报错信息是 SQL 语法错误先拿同一句 SQL 直接在 MySQL 命令行执行一遍如果命令行能执行而程序报错那基本就是驱动版本太旧、不认识新语法。这种情况升级驱动版本就好。还有一类隐藏问题驱动版本过新但服务器版本太老。比如用最新的 Connector/J 9.x 去连 MySQL 5.6驱动可能在握手阶段就要求服务端支持某种新的校验方式老服务器不支持于是报错。解决方式还是那句话让驱动的重大版本和服务器保持同一代次。服务器 5.7 配驱动 8.x 这种“跨一代”通常没问题但跨两代就有点悬了。博主实操心得排查问题时一定要学会看驱动日志驱动连接报错时简单的报错信息往往不够用。Java 项目中可以在启动参数中增加-Dorg.slf4j.simpleLogger.log.com.mysql.cjdebug如果是 Maven 项目可能会需要先引入 slf4j-simple 依赖。ODBC 驱动在 Windows 下也可以打开 “Enable ODBC trace log” 选项它会把 ODBC 调用过程完整记录到文本文件里。这些日志能帮你看到问题到底出在握手阶段、认证阶段还是 SQL 执行阶段能少走非常多弯路。6. 驱动下载之后几个容易忽略的操作细节6.1 Jar 包放进 lib 目录后还需要执行的操作很多人在传统工程里把 jar 包下载下来、拖进 lib 目录然后启动项目就报错。这不一定是你操作有问题可能是 IDEA 没把 lib 目录识别成依赖目录。IDEA 里正确的做法在项目根目录新建 lib 文件夹把 jar 包复制进去然后右键 jar 包在右键菜单选择 “Add as Library”。之后在弹出的对话框里确认 “Project Structure” 的 Modules 里多出了这个依赖。Eclipse 的做法类似右键 jar 包选择 “Build Path” - “Add to Build Path”。如果你使用的是 Maven 或 Gradle我更推荐直接通过 Maven 中央仓库拉取驱动依赖而不要手动下载 jar 包。原因有三点版本管理方便Maven 会自动传递依赖。你不需要每次换电脑都手动拷贝 jar 包。Maven 中央仓库的驱动包经过安全验证不存在被篡改的风险。6.2 ODBC 驱动的版本选择Unicode 驱动和普通驱动的区别在 ODBC 驱动安装过程中你会看到安装选项里有 “Unicode Driver” 和 “ANSI Driver” 两个组件。很多人在这一步直接跳过结果在配置数据源时发现列表里只有 “MySQL ODBC 8.0 Unicode Driver”少了一个非 Unicode 的选项。Unicode 驱动的意思是驱动内部用 UTF-16 编码处理字符串支持任何语言的字符。而 ANSI 驱动使用系统默认编码在 Windows 上通常是 GBK在处理多语言字符时会出问题。现在的软件和数据基本都是 Unicode 的所以安装时直接把两个驱动都装上配置 DSN 时也优先选用 Unicode Driver。补充一句如果你用的是 Python 的 pyodbc官方文档里也是推荐用 Unicode 驱动否则中文数据可能乱码。这个细节我用一次踩一次坑后来总结出了一个原则有 Unicode 就用 Unicode。6.3 驱动的后续维护与更新建议很多人装好驱动后就没有然后了直到某天 MySQL 升级程序就宕了。驱动的更新节奏不必太频繁但也不应该完全不管。我的建议是每半年或者一年去官网查看一下当前使用的驱动是否有重要安全更新。如果 MySQL 服务器要做大版本升级比如 5.7 升到 8.0驱动一定要提前做好适配测试最好在测试环境里先模拟一遍。关注官方驱动的“生命周期”信息。MySQL 官方会为每个驱动版本设定支持截止日期超出日期的版本不再接收安全补丁。继续使用过期的驱动就像用着不再更新的老旧系统安全风险只能自己扛。我见过一个项目用了 5 年 Connector/J 5.1.38没有任何问题于是大家都不去动它。但后来因为安全审计发现这个版本的 JDBC 驱动存在已知漏洞才被迫升级。升级过程中也碰到了一些兼容性问题多花了不少时间。早知如此不如当初每半年检查一次主动升级成本要低得多。博主实操心得把驱动版本记录在项目文档里我强烈建议所有项目都在 README 或者数据库配置文档里记录一个“环境版本清单”里面写明 MySQL Server 版本、Connector/J 或 Connector/ODBC 的版本、安装日期。这个习惯看起来不起眼但等到半年后你接到一个“为什么突然连不上数据库”的工单时它能帮你迅速判断是不是驱动版本和服务器版本不匹配。我在实际工作中这种版本清单已经帮我排查了多次不明原因的问题。7. 写在最后的一点经验之谈驱动下载这件事看起来是“下载一个文件而已”实际里面藏了不少细节。版本选型、位数匹配、路径配置、字符集设置每一步都有可能出问题。这篇教程整理的是我多年项目中的路径和方法每一步都是验证过的希望能帮助你在 MySQL 驱动的下载和配置上节省时间。如果你按照这个流程走下来还是遇到了问题建议先从驱动版本下手排查那是最常见也最容易被忽略的原因。
返回列表