今天在用mybatis连接数据库生成表的时候,遇到java.sql.SQLException: ORA-01424的错误,本来以为是sql语句或者是数据库编码问题,后来查到说是数据库回收站的问题,最后解决了问题,于是乎想起将问题记录下来,解决方案如下:
“java.sql.SQLException: ORA-01424: 转义符之后字符缺失或非法”,从这个错误中明显的看出这是Oracle数据库报的错,于是赶紧上google百度了一下,原来是Oracle数据库自10G以后都加入了回收站机制,即Drop Table 后,没有真正的删除表,而是在“垃圾站”中了。既然是回收站,时间长了就会满,一旦满了,再有垃圾就没地方放了,于是乎就异常了。
知道错误原因了,下一步就是解决问题了。首先要把回收站清空,可以通过:
SQL> select * from RECYCLEBIN 查询到回收站的内容;
彻底删除之,使用:
SQL> PURGE TABLE "BINjR8PK5HhrrgMK8KmgQ9nw==";
删除这一个或
SQL> PURGE RECYCLEBIN;
删除全部。
回收站清空后,再到系统操作就正常了,可是时间一长回收站仍然会满,于是乎干脆不用回收站得了,禁止回收站功能:
show parameter recyclebin
alter session set recyclebin=off。