posts - 119, comments - 62, trackbacks - 0, articles - 0
出现这个错误是因为oracle序列R3产生的值在表gdb_objectclasses中已经有记录造成的。解决办法是进入plus/sql或用PL/SQL Developer链接oracle.
(1)执行SQL
SELECT MAX(id) FROM gdb_objectclasses
找出id的最大值。例如执行结果是
MAX(ID)
---------------
55
(2)执行SQL
SELECT registration_id FROM table_registry WHERE table_name = 'GDB_OBJECTCLASSES'
找到表'GDB_OBJECTCLASSES'注册ID号
如执行结果是
--------------
3
(3)执行SQL
SELECT last_number FROM user_sequences WHERE sequence_name = 'R3'
找出序列R3的下一个值,如果第二步中的执行结果是4则这里是R4。例如执行结果是:
LAST_NUMBER
---------------
50
(4)从上面的查询结果中可以看出,序列R3的下一个值是50,而表gdb_objectclasses中小于55的值都已经被占用了。所以就会出现异常Unique contraint (SDE.GDB_OC_PKC) violated。解决办法是不断增加序列R3的值,使其大于55,执行下面的SQL语句6次就可以了。
SELECT R3.NEXTVAL from dual
(5)在SDE中,选中sde连接后点鼠标右键,选择refresh。然后就可以再导数据了。注意这一步一定要进行,这也是我一直认为sde很烂的地方。

只有注册用户登录后才能发表评论。


网站导航: