1.错误描述:
由于公司所开发项目使用的是雪花ID,所以最近在使用雪花ID做关联查询时出现原本查询结果是一条,但是最终查询出来的却是两条或者多条,造成项目取数据时报错。
2.错误原因
本人在网上找了许久,暂未发现明确原因。但是通过观察查询出来的数据发现,数据的主键id是相邻的!然后根据mysql官方不推荐使用雪花id作为主键的一些原因,本人大概推测。应该就是雪花id引起的查询数据出错!
3.解决办法
解决办法本人推荐2个:
1.尽量不使用雪花id作为主键
如果是刚开始建表时,尽量不使用雪花id作为主键即可避免该问题
2.查询时使用CAST(id,CHAR)函数
如果是必须使用雪花id,可以在关联查询时涉及到雪花id时使用CAST()函数将id的类型强转为CHAR类型进行查询,查询出来的结果就是正确的。但是查询速度太慢!