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

如何将TXT文件插入MySQL表?LOAD_FILE报错求助

解决LOAD_FILE插入MySQL时的非空约束错误

错误本质

LOAD_FILE('/APPLES/transcription.txt')返回了NULL,而你的transcript列设置了非空约束,因此触发1048完整性错误。以下是具体排查和解决步骤:

1. 验证文件路径与可读性

  • 先在MySQL客户端执行SELECT LOAD_FILE('/APPLES/transcription.txt');,确认是否能返回文件内容:
    • 如果返回NULL,说明MySQL服务器无法访问该文件(注意:路径是MySQL所在服务器的绝对路径,不是你的应用服务器路径)。
  • 检查文件是否存在:在MySQL服务器上执行ls /APPLES/transcription.txt(Linux)或dir \APPLES\transcription.txt(Windows)确认路径正确性。

2. 调整文件与目录权限

  • MySQL运行用户(通常是mysql用户)需要对文件和上级目录有读权限:
    # 给文件设置读权限
    chmod 644 /APPLES/transcription.txt
    # 给上级目录设置可访问权限
    chmod 755 /APPLES
    

3. 检查MySQL配置限制

  • 执行SHOW VARIABLES LIKE 'secure_file_priv';查看参数:
    • 如果值为某个特定目录,你的transcription.txt必须放在该目录下才能被LOAD_FILE读取;
    • 如果值为NULL,说明LOAD_FILE被禁用,需要修改my.cnf(或my.ini),设置secure_file_priv = "/允许的目录路径",然后重启MySQL服务。

4. 替代方案:Python读取文件后插入

绕开MySQL的LOAD_FILE限制,直接在代码中读取文件内容作为参数传入:

with open('/APPLES/transcription.txt', 'r', encoding='utf-8') as f:
    transcript_content = f.read()

cursor.execute(
    "insert into `movies` (`movie_name`,`movie_file`,`movie_password`,`transcript`) values (%s,%s,%s,%s)",
    [moviename, moviefile, password, transcript_content]
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 20:07:33