日期:2014-05-17  浏览次数:21013 次

PL/SQL Developer的一个BUG
今天使用PL/SQL Developer时发现一个BUG。
新建同名的两个用户,只是一个用大写,一个用小写,比如:a,A。
打开PL/SQL Developer的USERS节点,找到a右击后选drop,我发现a并没有被删除,而是A被删除了。
当你再在a处右击选drop时会报错:Error dropping a:ORA-01918:用户'A'不存在。
我用的版本是:
PL/SQL Developer v7.1.4.1390

使用SQL语句:DROP USER "a" cascade
则可顺利将用户a删除。

不知道大家有没有遇到这样的问题。

------解决方案--------------------
我刚才试了下,PL/SQL Developer v7.1.5.1398上也有这个问题。

估计这个工具在执行时,把小写的都转成大写后再执行的。

------解决方案--------------------
不光用户,表也一样,你建表小写加上双引号,同样删不掉
字段名用了关键字,edit data后没法保存
编辑数据的时候,互换两行的主键,每次都主键冲突
等等等等,问题多多,我除了用它那些模版,小工具,数据操作一般不用它。
------解决方案--------------------
PL/SQL Developer每次执行语句时直接把语句发送到oracle数据库
让oracle数据库执行,问题是每次发送语句是这样发送的
例如要删除用户a,则 PL/SQL Developer 发送的是: drop user a
请注意看,因为没有对a加双引号,所以oracle数据库的翻译就是对应大写的A
而我们自己发送的语句: drop user "a"
因为加了引号,所以oracle数据库知道对应的是a
所以就可以删除a了,这不是PL/SQL Developer的Bug,是oracle数据库的一个特性引起的