今天真是,搞得我头都大。本来以为数据库这种东西,我用得还算溜,结果今天还是栽个跟头。我这边尝试运行一个mysql查询的时候,老是给我报错,提示我“query error”,你说气不气人。
一看到这个错误,我第一反应就是:“坏,SQL语句八成写错”。于是我把那个出错的SQL语句从头到尾看好几遍,还跟之前能正常运行的语句对比一下,没发现啥明显的错误。然后我又去检查一下数据库连接,确保我的程序能正常连上数据库,这一步也没问题。
- 我就怀疑是不是数据库表本身有问题。我用各种工具查看表的结构,确认字段名、数据类型啥的都对得上,甚至还试着执行一些简单的查询,确保表本身是没毛病的。
- 再后来我还怀疑过是不是数据库用户的权限不够。你知道的,有时候数据库管理员会设置各种权限,限制用户执行某些操作。我去查一下我的用户权限,发现该有的权限都有,这也不是问题所在。
到这里,我真的有点懵。常规的排查手段都用,还是找不到问题。于是我打开mysql的日志文件,想看看里面有没有更详细的错误信息。你还别说,这招还真管用。日志里记录一条错误,提示我某个字段的类型不对。顺着这条线索,我仔细检查一下,发现原来是我在写SQL语句的时候,把一个整数类型的字段当成字符串来用,导致类型不匹配,查询就出错。
找到问题所在就好办。我用cast()函数,把那个字段的类型临时转换一下,然后再执行查询,这下终于没问题,查询结果正常返回。整个过程可把我折腾坏,看来以后写SQL语句还得更仔细点,不能想
通过这个事,我也算吃一堑长一智,以后遇到类似的问题,我就知道该从哪些方面入手排查。而且我还得养成看日志的好习惯,这玩意儿有时候真的能帮大忙。行,今天的分享就到这里,希望对大家有所帮助。
免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。