知道gorm
的 model增加DeletedAt
字段就可以支持软删除后,本菜鸡大笔一挥,model 中增加了一行
go
1 | DeletedAt time.Time `gorm:"deleted_at"` |
完美!本地一跑…
plaintext
1 | Incorrect datetime value: '0000-00-00' for column 'deleted_at' at row 1 |
喵了个咪,然后去查了一下,sql_model,其中有一个是NO_ZERO_IN_DATE
,该模式下,不允许日期和月份为零,所以会报上面的问题。
简单~ 找到问题解决它,先去查一下当前mysql的 sql_mode
, 命令如下:
sql
1 | SELECT @@SESSION.sql_mode; |
然后执行
sql
1 | SET GLOBAL sql_mode = "STRICT_TRANS_TABLES"; |
即可设置为严格模式。
这里有一段小插曲:我设置完后,运行代码,还是报上面的错误,发现是默认 deleted_at 为 null,但是实际插入的是0000-00-00, 最终定位是 DeletedAt 的类型,应该为*time.Time
, 指针类型,此时为空时,才会插入 null,而非 0000-00-00
下面简单整理一下常见的sql_model