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

id为AUTO_INCREMENT时,如何解决LOAD DATA的'\FEFFN'值错误?

解决MySQL LOAD DATA报错:Incorrect integer value: '\FEFFN' for column 'id'

错误原因

你的data.txt文件采用了**带UTF-8 BOM(字节顺序标记)**的编码格式,文件开头的\FEFF字节被MySQL识别为id字段值的一部分,与你写入的\N拼接成\FEFFN。由于id是整数类型,无法解析该字符串,因此触发ERROR 1366错误。

解决方案

方法1:修改文件编码为无BOM的UTF-8

这是最直接的解决方式:

  • 使用Notepad++打开data.txt,顶部菜单选择「编码」→「UTF-8 无BOM」,保存覆盖原文件。
  • 使用VS Code打开文件,点击右下角的编码标识(如「UTF-8 with BOM」),选择「通过编码保存」→「UTF-8」(不要选择带BOM的选项)。

方法2:在LOAD DATA语句中处理BOM

如果无法修改文件,可以通过语句参数适配带BOM的文件:

  • MySQL 8.0及以上版本:直接指定字符集为utf8mb4,MySQL会自动识别并跳过UTF-8 BOM:
    LOAD DATA
    INFILE 'C:/mysql/test_folder/data.txt'
    INTO TABLE tbl1
    CHARACTER SET utf8mb4
    FIELDS TERMINATED BY ','
    LINES TERMINATED BY '\n';
    
  • 旧版本MySQL:跳过文件开头的3个字节(UTF-8 BOM的长度):
    LOAD DATA
    INFILE 'C:/mysql/test_folder/data.txt'
    INTO TABLE tbl1
    FIELDS TERMINATED BY ','
    LINES TERMINATED BY '\n'
    IGNORE 1 CHARACTERS;
    

方法3:显式指定加载的列(更稳妥)

由于id是自增字段,你可以在LOAD DATA中只指定需要赋值的列,让MySQL自动生成自增id,完全规避id字段的赋值问题:

LOAD DATA
INFILE 'C:/mysql/test_folder/data.txt'
INTO TABLE tbl1
CHARACTER SET utf8mb4
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(txt, dt, col4); -- 仅指定非自增列,id由MySQL自动生成

内容的提问来源于stack exchange,提问作者Александр

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 00:24:50