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

MySQL含TIME类型的INSERT语句语法错误排查求助

解决MySQL INSERT语句的语法错误问题

嘿,我帮你排查出了这条INSERT语句里的几个关键问题,咱们一个个说:

  • 自增ID字段的非法空值:你的id是自增字段,在VALUES列表里直接留空(也就是(,14,,...里的第一个空位置)是不符合MySQL语法的。对于自增字段,你有两个选择:要么直接把id从INSERT的列名列表里删掉(推荐这种,MySQL会自动帮你生成自增ID);要么在VALUES对应的位置写NULL或者DEFAULT,让MySQL自动填充自增值。

  • 日期字段未加单引号:date_played是日期类型,你写的2018-04-15没有用单引号包裹,MySQL会把它当成算术表达式2018 - 04 - 15来计算,结果是2009,这完全不是你想要的日期值。必须用单引号把日期字符串括起来,也就是'2018-04-15'。

  • 空值写法的规范优化:schedule_id和forfeit_reason对应的VALUES位置你留了空,虽然某些场景下MySQL能识别,但更规范的写法是用NULL(如果字段允许为NULL)或者空字符串'',这样能避免语法歧义。

修正后的语句(推荐版本)

这个版本去掉了自增的id列,是最简洁的写法:

INSERT INTO `lwljhb_lwl_matches` (league_seasons_id, schedule_id, playoff_round, scheduled_week_number, date_played, winner_id, loser_id, forfeit, forfeit_reason, match_begin_time, match_end_time) 
VALUES (14, NULL, 0, 1, '2018-04-15', 52, 87, 0, NULL, '14:55:00','17:41:00');

另一种保留id列的写法

如果你一定要在列名列表里保留id,可以这样写:

INSERT INTO `lwljhb_lwl_matches` (id, league_seasons_id, schedule_id, playoff_round, scheduled_week_number, date_played, winner_id, loser_id, forfeit, forfeit_reason, match_begin_time, match_end_time) 
VALUES (NULL, 14, NULL, 0, 1, '2018-04-15', 52, 87, 0, NULL, '14:55:00','17:41:00');

另外说一下,你写的match_begin_time和match_end_time这两个TIME类型字段是没问题的,单引号包裹的写法完全正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:12:08