今天往数据库插入数据的时候,发现一个字段有问题,完全插入不了!

为了重现这个问题,我直接用navicat在数据库命令行执行sql语句,发现这个字段就像坏了一样,完全无法进行任何操作。

 

一、问题场景

使用原生jdbc时报错,找不到一个字段。我去navicat里面看了看,这个字段根本就是存在的。我就觉得很奇怪了。

二、尝试解决

  1. 当时第一反应是字段名打错了,看了一下发现没有打错字段名。
  2. 后来一想,会不会是数据库连错了,存在一个同名表,但是字段不一样。检查了一下发现数据库是没有搞错的。
  3. 之后我就从sql语句找原因,横看竖看都觉得很对呀,一点问题都没有。
  4. 之后我就直接在数据库命令行执行这个sql语句,发现同样存在找不到字段的错误。所以我就select出来看了看,发现能查出这个字段…
  5. 之后我又想,这个字段名会不会是mysql的关键字,导致冲突了?查了一下,根本就不是关键字…
  6. 后来又查了一下,网上有人说是mysql驱动的问题,识别不到字段。我当时就觉得滑天下之大稽,我一直用这个版本用过来了,从来没发生过这种事。不可能是这个原因。

折腾了半个小时,没有任何进展。

三、问题解决

最后我尝试清空了navicat的这个字段名,重新输入了一遍。奇迹出现了,sql语句可以正常执行了。

四、问题原因

这个可能是navicat的锅。我可以肯定字段中里完全没有空格,字段名完全没有打错,但是就是不对应。

很可能是有透明字符在字段中,导致看不出来,又识别不了。后来查找了一下,网上有人提到有这种情况,但是完全没有解释这个”透明字符”是什么东西!我尝试赋值黏贴搞了一会,发现完全没办法获取嘛,就放弃了。

五、总结

以后发生这种明明存在字段,但是却找不到的情况,就尝试手动更新一下字段,或许就能解决了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注