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

Windows下Docker部署MySQL用Python执行LOAD DATA报错求解决方案

本地Docker部署MySQL解决LOAD DATA相关错误解决方案

方案一(推荐,本地使用最省事):使用`LOAD DATA LOCAL INFILE,不需要修改secure_file_priv参数

服务端配置修改

  • 进入运行中的MySQL容器:docker exec -it 你的MySQL容器名称 /bin/bash
  • 容器内执行命令追加配置:echo "local_infile=1" >> /etc/mysql/my.cnf
  • 退出容器后重启容器生效:docker restart 你的MySQL容器名称
  • 验证配置:进入MySQL命令行执行SHOW VARIABLES LIKE 'local_infile';,返回值为ON即配置成功

客户端pymysql配置修改

  • 建立数据库连接时添加local_infile=True参数,示例代码:
import pymysql
conn = pymysql.connect(
    host='127.0.0.1',
    port=3306,
    user='你的数据库用户名',
    password='你的数据库密码',
    database='你的目标库名',
    local_infile=True
)
  • 后续直接执行LOAD DATA LOCAL INFILE '本地待导入文件的绝对路径' INTO TABLE 目标表名;即可正常运行

方案二:修改secure_file_priv参数使用原生LOAD DATA INFILE

参数说明

  • secure_file_priv为NULL:完全禁止MySQL导入导出文件,即你当前的默认状态
  • secure_file_priv为指定路径:仅允许从该指定路径导入导出文件
  • secure_file_priv为空字符串"":允许从任意路径导入导出文件,适合本地测试场景

配置步骤

  • 停止当前运行的MySQL容器:docker stop 你的MySQL容器名称
  • 在Windows本地新建my.cnf文件,写入内容:
[mysqld]
secure_file_priv=""
  • 启动容器时挂载本地配置文件到容器内配置目录,启动命令示例(替换为你自己的参数即可:
docker run -d -p 3306:3306 -v 你本地my.cnf文件的绝对路径:/etc/mysql/conf.d/my.cnf -e MYSQL_ROOT_PASSWORD=你的root密码 --name 自定义容器名 mysql:你使用的MySQL版本号
  • 验证配置:进入MySQL命令行执行SHOW VARIABLES LIKE 'secure_file_priv';,返回值为空即配置成功
  • 使用注意:需要将待导入的文件放到Docker容器可访问的路径,可通过挂载本地目录到容器内对应路径后再执行LOAD DATA INFILE语句

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:15:06