Incorrect date value: '0000-00-00' for column 'birth' at row 18
时间: 2024-10-16 13:21:26 浏览: 31
MySQL 8.0.13设置日期为0000-00-00 00:00:00时出现的问题解决
当你尝试在GORM(Go的ORM框架)中通过MySQL执行插入操作时,遇到错误"Incorrect datetime value: '0000-00-00' for column 'created_at' / 'xxx' at row 1",这意味着你在试图插入一条记录时,对于某个 DATETIME 或 DATE 类型的字段(如 'created_at' 或 'birth'),你传入了一个无效的日期值,即 '0000-00-00',这在SQL中被认为是非法的。
正确的做法是确保向这些日期时间字段插入的是有效的日期/时间值。如果你的字段允许NULL值,可以不直接插入值,但如果是非空约束,你应该提供一个具体的日期时间。这里是一些可能的解决方案:
1. **使用默认值**:
如果字段允许NULL并有默认值,你可以这样插入:
```sql
db.Table("your_table").Insert().Defaults().Save()
```
2. **插入当前日期时间**:
使用数据库函数或Go的time包来获取当前日期时间:
```go
created := time.Now()
db.Table("your_table").Insert(&YourModel{CreatedAt: created}).Save()
```
3. **手动设置有效日期**:
如果你想插入特定的日期时间,确保格式正确(通常是 'YYYY-MM-DD HH:MM:SS' 或 'YYYY-MM-DD'):
```go
created := "2022-01-01 12:00:00"
db.Table("your_table").Insert(&YourModel{CreatedAt: created}).Save()
```
确保替换 "your_table" 和 "YourModel" 为实际表名和模型名,并根据你的需求调整日期时间值。
阅读全文