PL/SQL插入数据报错:Access violation at address 00413A81 in module 'plsqldev.exe'. Read of address 00000000

前言

今天同事在使用plsql给oracl数据库插入记录时报错:Access violation at address 00413A81 in module 'plsqldev.exe'. Read of address 00000000,百度查询大致有三种说法:

  1. 内存越界的问题,需要重新注册Windows的动态链接库
  2. oracle client版本问题需要重装plsql和oracle clinet
  3. 是tnsnames.ora文件格式不正确,ORACLE连接名不可使用中文字符,不可以存在空格

但是我这里最终解决方法跟上面三种均不相同,注意报错信息查看仔细。

一、报错信息

二、错误排查

插入记录保存时报错,想到上周有对plsql的时间设置做过调整,而且恰好是带有时间的记录插入报错,猜想可能是plsql时间格式造成的,所以尝试把记录中含有时间的字段内容去掉,发现去掉时间字段的记录能正常插入保存,基本确定是时间格式问题。

下图是部分表内容(图片是调整了plsql时间格式之后的图片,调整之前时间字段里面的内容全不显示)

查看plsql时间设置,如下图,果然之前将日期/时间格式设置成了自定义但是未设置具体参数,所以plsql中表的日期/时间字段不能正常显示,插入时也报错。

三、对症下药

修改plsql日期/时间格式为窗口格式,应用--确定 重启plsql连接数据库,表中日期/时间字段能正常显示,插入也能正常保存。

原文地址:https://www.cnblogs.com/lcxhk/p/14292667.html