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

C# 使用MySqlConnection执行LOAD LOCAL DATA INFILE报错解决方法

报错原因

触发该错误的核心是两个配置未同时开启:

  1. MySQL服务端默认禁用了LOAD DATA LOCAL INFILE命令权限
  2. C#的MySQL连接默认未开启本地文件加载权限
解决步骤

1. 修改MySQL服务端配置

  • 找到MySQL配置文件:Windows环境为my.ini,Linux环境为/etc/my.cnf或/etc/mysql/my.cnf
  • 在配置文件的[mysqld]节点下添加配置:local_infile=1
  • 保存配置后重启MySQL服务
  • 重启完成后执行SQL命令验证配置是否生效:SHOW GLOBAL VARIABLES LIKE 'local_infile';,返回值为ON即为配置成功

2. 修改C# MySQL连接字符串

在现有的连接字符串中新增AllowLoadLocalInfile=true参数,示例连接字符串如下:

server=127.0.0.1;port=3306;user=root;password=你的数据库密码;database=你的业务库名;AllowLoadLocalInfile=true;

3. 代码与依赖校验

  • 确保使用的MySql.Data或MySqlConnector驱动版本在6.10以上,老旧版本不支持AllowLoadLocalInfile参数
  • 执行LOAD DATA LOCAL INFILE的代码示例参考:
using (MySqlConnection connection = new MySqlConnection("你的连接字符串"))
{
    connection.Open();
    string loadSql = @"LOAD DATA LOCAL INFILE 'D:/import_data.csv'
    INTO TABLE `target_table`
    FIELDS TERMINATED BY ',' 
    ENCLOSED BY '\""'
    LINES TERMINATED BY '\n'
    IGNORE 1 ROWS";
    using (MySqlCommand command = new MySqlCommand(loadSql, connection))
    {
        command.ExecuteNonQuery();
    }
}
常见排查点
  • 不要仅修改会话级别的local_infile变量,该配置重启服务后会失效,必须写入配置文件
  • 确认运行C#程序的操作系统账号对导入的CSV/文本文件有读取权限
  • 如果使用云托管的MySQL服务,需要在云数据库控制台的参数配置页开启local_infile参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 08:42:03