MySQL以SHA加密密码为查询条件时返回空集问题求助
MySQL插入后查询无结果排查方案
- 密码字段长度不足
SHA() 函数生成的是40位长度的十六进制哈希值,如果你表中password字段设置的长度小于40(例如定义为VARCHAR(30)),插入时哈希值会被自动截断,存储的内容不完整,查询时比对完整哈希自然无法匹配。可以执行DESC customer;查看password字段的具体定义确认。 - 插入后未提交事务
如果你的MySQL客户端开启了手动事务提交模式,插入操作执行后没有执行COMMIT;命令,数据只会保存在当前会话的临时事务中,其他会话查询时看不到这条数据,就会返回空集。 - 哈希参数存在隐形差异
检查插入和查询时SHA函数的入参是否完全一致,是否存在多余的空格、换行、特殊不可见字符,或者两次输入的字符大小写、编码不同,都会导致生成的哈希值不一致,无法匹配。 - 插入操作实际执行失败
检查插入语句执行时是否抛出了错误,例如存在唯一键冲突、非空字段未赋值等情况,导致数据实际没有插入成功,查询自然返回空。 - 操作的库/表不匹配
确认插入和查询操作都是在同一个数据库的同一张customer表执行,避免误操作到其他测试库、备份表导致数据不一致。 - 字段排序规则/字符集问题
如果password字段使用了大小写敏感的排序规则,或者插入、查询时的连接字符集不一致,也可能导致字符串比对失败。
内容的提问来源于stack exchange,提问作者Mursyid Nasir
相关产品推荐
相关产品推荐

