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

Python脚本执行MySQL LOAD DATA LOCAL INFILE报3948错误的解决咨询

解决Python执行LOAD DATA LOCAL INFILE时的"Loading local data is disabled"错误

这个错误是MySQL的默认安全限制导致的——它默认禁用了本地数据加载功能,必须同时在服务器端和你的Python客户端都开启该选项,才能正常使用LOAD DATA LOCAL INFILE。下面分步骤给你解决:

1. 服务器端开启local_infile支持

临时生效(重启MySQL后失效)

登录你的MySQL服务器,执行这条SQL命令:

SET GLOBAL local_infile = 1;

执行完记得重新连接MySQL,这个设置才会生效。

永久生效(修改配置文件)

如果不想每次重启MySQL都重复操作,直接修改MySQL的配置文件:

  • Windows Server下找到my.ini(通常在MySQL安装目录或者C:\ProgramData\MySQL\MySQL Server X.X路径中)
  • 在[mysqld]段落下添加一行:
    local_infile = 1
    

保存后重启MySQL服务即可。

2. Python客户端(pymysql)开启local_infile支持

你的原连接代码漏掉了关键参数!pymysql默认关闭了本地文件加载支持,必须在connect时显式开启local_infile=True。修改后的代码如下:

import pymysql

# 核心是加上local_infile=True参数
con = pymysql.connect(
    host='localhost',
    database='test',
    user='root',
    password='test123',
    local_infile=True
)
cursor = con.cursor()

try:
    # 格式化后的导入语句更易读
    cursor.execute("""
        LOAD DATA LOCAL INFILE 'C:/Users/Desktop/Excercise/text1.txt' 
        INTO TABLE general_report 
        FIELDS TERMINATED BY ' ' 
        LINES TERMINATED BY '\r\n'
    """)
    con.commit()  # 别忘了提交事务,否则数据不会写入表中!
    print("数据导入成功啦")
except Exception as e:
    con.rollback()
    print(f"出现问题: {e}")
finally:
    # 养成关闭游标和连接的好习惯
    cursor.close()
    con.close()

额外注意事项

  • 确保你的MySQL用户(比如这里的root)拥有FILE权限,如果没有的话,登录MySQL执行:
    GRANT FILE ON *.* TO 'root'@'localhost';
    FLUSH PRIVILEGES;
    
  • 检查你的txt文件路径是否正确,Windows下可以用正斜杠/或者双反斜杠\\,避免转义问题
  • 确认运行Python脚本的用户有读取该txt文件的权限(Windows Server下权限问题很容易被忽略)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 19:27:46