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

LOAD DATA LOCAL INFILE导入异常:ID_Niveau未自增问题求助

MySQL LOAD DATA LOCAL INFILE导入后自增ID_Niveau为0,未触发自增逻辑

我来帮你排查这个问题,大概率是LOAD DATA语句的配置细节没处理对,咱们一步步拆解:

问题核心分析

你的表结构里ID_Niveau是自增主键,但导入后出现ID为0的情况,本质是MySQL没有触发自增逻辑,反而把无效值塞进了自增字段——这通常是因为导入时没有明确指定要填充的字段,导致数据库错误地把文本内容映射到了自增ID字段上。

具体排查与修复步骤

1. 修正LOAD DATA语句(最关键的一步)

你原来的导入语句缺少了INTO TABLE和目标字段的指定,MySQL会默认把每行数据按顺序映射到表的所有字段(先ID_Niveau,再contenu)。但你的文本内容是字符串,无法转成有效的整数ID,所以MySQL会把它转成0,完全跳过了自增逻辑。

把语句改成这样,明确指定只导入contenu字段:

LOAD DATA LOCAL INFILE "C:/Utilisateurs/Moham/desktop/Bureau/Cesi/Ressources/lvl.txt"
FIELDS TERMINATED BY '\n'
ENCLOSED BY ';'
LINES TERMINATED BY '\n'
INTO TABLE lorann.Niveau (contenu);

这样MySQL会自动为ID_Niveau生成自增值,不会再用无效值填充。

2. 优化文本文件的分隔符配置

你的地图每行结尾都有;,当前的ENCLOSED BY ';'可能会把整个行内容(除了末尾的;)当作字段值,但如果行结尾还有换行符,可能会引入多余的空白字符。可以调整成更精准的分隔规则:

LOAD DATA LOCAL INFILE "C:/Utilisateurs/Moham/desktop/Bureau/Cesi/Ressources/lvl.txt"
FIELDS TERMINATED BY ';'
TRAILING NULLCOLS
LINES TERMINATED BY '\r\n' -- Windows系统文本通常用\r\n换行,Linux/macOS用\n
INTO TABLE lorann.Niveau (contenu);
  • TRAILING NULLCOLS:用来忽略每行末尾多余的分隔符,避免导入空行或无效数据
  • 换行符根据你的系统调整,Windows下用\r\n更稳妥

3. 重置自增计数器(可选,针对已导入错误数据的情况)

如果已经导入了ID为0的错误数据,先清空表并重置自增计数器:

TRUNCATE TABLE lorann.Niveau;

TRUNCATE会彻底清空表,并把自增计数器重置为1,之后再用修正后的语句重新导入。

4. 验证导入结果

导入后可以执行查询确认:

SELECT ID_Niveau, contenu FROM lorann.Niveau LIMIT 5;

如果ID从1开始递增,且contenu字段正确显示地图行内容,就说明问题解决了。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:46:20