mysql注意事项

更新了0条数据是不会报错的;
查询单条数据,没有匹配的会报“sql: no rows in result set”;查询多条数据,没有匹配的会返回空数组
对于唯一键,同时有几个接口都在插入数据,会报错“Duplicate entry * for key”

Mysql保持数据一致性的方法:加事务;mq补偿
https://blog.51cto.com/toren/5427075
https://blog.csdn.net/wangchengming1/article/details/120409137

mlysql幂等是啥

set @@session.sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION';
设置严格模式'ONLY_FULL_GROUP_BY时:
有group by时,不能select 聚合列(group by的列)以外的列,单独select聚合函数avg(),sum(),count(),min(),max()时,不能同时select任何列

"Out of sort memory error " has an inconsistent relationship with the buffer size
mysql版本 8.0.29 排序缓冲大小256k -> 1M,并且改为内存里排序,可以解决存的json字段太大导致排序失败查出空的错误;
内存排序实现sort方法

type Uint64Slice []uint64

func (p Uint64Slice) Len() int           { return len(p) }
func (p Uint64Slice) Less(i, j int) bool { return p[i] < p[j] }
func (p Uint64Slice) Swap(i, j int)      { p[i], p[j] = p[j], p[i] }

sort.Sort(utils.Uint64Slice(userIdList))

你可能感兴趣的:(数据库,mysql)