You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL 8.0加载本地数据失败,配置my.ini后仍报错求排查方向

问题背景

此前Java程序可正常将纯文本文件数据上传至MySQL 5.7数据库,迁移至MySQL 8.0并更换mysql-connector-java-8.0.22.jar重新编译后,执行LOAD DATA LOCAL INFILE时出现报错:

Loading local data is disabled: this must be enabled on both the client and server sides

已完成的操作:

  • 在my.ini中配置[client]和[mysqld]段的local_infile = 1,secure-file-priv已设置为"C:/ProgramData/MySQL/MySQL Server 8.0/Uploads"
  • 重启MySQL服务后,执行SHOW VARIABLES LIKE 'local_infile';显示local_infile = ON
  • Java核心代码片段:
connection = DriverManager.getConnection("jdbc:mysql://192.168.1.5:3306/testdb?user=root&password=pwd123");
stmt = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
stmt.executeUpdate("LOAD DATA LOCAL INFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/something.csv' INTO TABLE data FIELDS TERMINATED BY ';' LINES TERMINATED BY '' (field1,field2,field3,field4)");
  • Java编译环境为JDK 1.8.0_281,错误仍未解决。
排查方向
  • JDBC连接串需开启本地文件加载权限:MySQL 8.0的JDBC驱动默认禁用本地文件加载,必须在连接URL中添加&allowLoadLocalInfile=true,修改后连接串示例:
    connection = DriverManager.getConnection("jdbc:mysql://192.168.1.5:3306/testdb?user=root&password=pwd123&allowLoadLocalInfile=true");
    
  • 验证客户端与服务端的local_infile参数一致性:通过MySQL命令行客户端连接服务器,分别执行SHOW GLOBAL VARIABLES LIKE 'local_infile';和SHOW SESSION VARIABLES LIKE 'local_infile';,确认全局和当前会话的参数均为ON;同时手动在命令行执行LOAD DATA LOCAL INFILE语句,排除Java程序本身的问题。
  • 检查文件路径与权限:确认CSV文件确实存在于C:/ProgramData/MySQL/MySQL Server 8.0/Uploads目录,且MySQL服务运行用户对该目录及文件有读取权限。
  • 确认配置文件是否生效:执行SHOW VARIABLES LIKE 'config_file';查看MySQL当前加载的配置文件路径,确认是否为你修改的my.ini,避免服务重启后未加载新配置。
  • 排查驱动兼容性:尝试升级mysql-connector-java至更稳定的8.0.x版本(如8.0.36),排除驱动版本bug导致的问题。
  • 检查连接复用问题:若程序使用连接池,需重启Java程序或清空连接池,确保新连接使用了修改后的URL参数,避免复用未开启权限的旧连接。

内容的提问来源于stack exchange,提问作者McCo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 05:52:53