今天往数据库插入数据的时候,发现一个字段有问题,完全插入不了!
为了重现这个问题,我直接用navicat在数据库命令行执行sql语句,发现这个字段就像坏了一样,完全无法进行任何操作。
一、问题场景
使用原生jdbc时报错,找不到一个字段。我去navicat里面看了看,这个字段根本就是存在的。我就觉得很奇怪了。
二、尝试解决
- 当时第一反应是字段名打错了,看了一下发现没有打错字段名。
- 后来一想,会不会是数据库连错了,存在一个同名表,但是字段不一样。检查了一下发现数据库是没有搞错的。
- 之后我就从sql语句找原因,横看竖看都觉得很对呀,一点问题都没有。
- 之后我就直接在数据库命令行执行这个sql语句,发现同样存在找不到字段的错误。所以我就select出来看了看,发现能查出这个字段…
- 之后我又想,这个字段名会不会是mysql的关键字,导致冲突了?查了一下,根本就不是关键字…
- 后来又查了一下,网上有人说是mysql驱动的问题,识别不到字段。我当时就觉得滑天下之大稽,我一直用这个版本用过来了,从来没发生过这种事。不可能是这个原因。
折腾了半个小时,没有任何进展。
三、问题解决
最后我尝试清空了navicat的这个字段名,重新输入了一遍。奇迹出现了,sql语句可以正常执行了。
四、问题原因
这个可能是navicat的锅。我可以肯定字段中里完全没有空格,字段名完全没有打错,但是就是不对应。
很可能是有透明字符在字段中,导致看不出来,又识别不了。后来查找了一下,网上有人提到有这种情况,但是完全没有解释这个”透明字符”是什么东西!我尝试赋值黏贴搞了一会,发现完全没办法获取嘛,就放弃了。
五、总结
以后发生这种明明存在字段,但是却找不到的情况,就尝试手动更新一下字段,或许就能解决了。