1292: Incorrect datetime value / truncated incorrect value(日期时间值不正确 / 截断了不正确的值)
MySQL含义
转换为目标列类型(尤其是日期/时间或数值)时,值无效或格式错误。在严格模式下,MySQL 将其作为错误拒绝。
原因
'0000-00-00' 之类的无效日期或值;日期格式错误;数值列中的非数字文本;启用了严格 SQL 模式(STRICT_TRANS_TABLES);不同的字符集/排序规则导致的转换问题。
解决方法
使值符合列类型的有效格式(日期为 'YYYY-MM-DD')。用 NULL 代替空/无效日期。必要时用 STR_TO_DATE 指定显式格式:STR_TO_DATE(str, '%Y-%m-%d')。如果需要临时容忍,检查 sql_mode,但最好修正数据。逐步缩小范围找出有问题的行。
同一数据库的其他条目
- 1052Column 'x' in field list is ambiguous(字段列表中的列 'x' 不明确)
- 1136Column count doesn't match value count(列数与值数不匹配)
- 1048Column 'x' cannot be null(列 'x' 不能为 null)
- 1406Data too long for column(列的数据过长)
- 1071Specified key was too long; max key length is 767 bytes(指定的键过长;最大键长度为 767 字节)
- 1050Table already exists(表已存在)
- 1051Unknown table 'x'(未知表 'x')