【发布时间】:2017-04-28 12:25:49
【问题描述】:
我有两个oracle空间表,分别是restaurants和persons。这两个表的结构是:
CREATE TABLE restaurants(
id NUMBER PRIMARY KEY,
name VARCHAR2(32),
shape SDO_GEOMETRY
);
CREATE TABLE persons(
p_id NUMBER PRIMARY KEY,
p_name VARCHAR2(32),
p_shape SDO_GEOMETRY
);
然后,在填充每个表之后,我想为每个表创建空间索引。 restaurants 表的以下指令执行成功。
CREATE INDEX restaurants_spatial_idx
ON restaurants(shape)
INDEXTYPE IS mdsys.spatial_index;
但是,当我为persons 表写信时:
CREATE INDEX persons_spatial_idx
ON persons(p_shape)
INDEXTYPE IS mdsys.spatial_index;
这在 sql developer 3.2.20 中给了我以下错误:
从命令中的第 340 行开始出错:
创建索引 people_spatial_idx
ON 人(p_shape)
INDEXTYPE 是 mdsys.spatial_index
命令行错误:340 列:14
错误报告: SQL 错误:ORA-00955:名称已被现有对象使用 00955. 00000 - “名称已被现有对象使用”
原因:
行动:
因为这是说我已经和索引命名为persons_spatial_idx,所以我删除了这个索引使用:DROP INDEX persons_spatial_idx; 然后当我尝试再次创建索引时,它产生了以下错误:
从命令中的第 340 行开始出错:
创建索引 people_spatial_idx ON 人(p_shape) INDEXTYPE 是 mdsys.spatial_index
命令行错误:340 列:14
错误报告:
SQL 错误:ORA-29855:执行 ODCIINDEXCREATE 例程时出错
ORA-13249:空间索引内部错误:[mdidxrbd]
ORA-13249:空间索引错误:索引构建失败
ORA-13249:空间索引错误:[mdrcrtxfergm]
ORA-13249:空间索引错误:[mdpridxtxfergm]
ORA-13200:空间索引存在内部错误 [ROWID:AAAFGnAABAAALHpAAA]。
ORA-13206: 创建空间索引时发生内部错误 []
ORA-13365: 层 SRID 与几何 SRID 不匹配
ORA-06512:在“MDSYS.SDO_INDEX_METHOD_10I”,第 10 行
- 00000 - “执行 ODCIINDEXCREATE 例程时出错”
*原因:未能成功执行 ODCIIndexCreate 例程。
*操作:检查例程是否已正确编码。
感谢阅读。
【问题讨论】:
-
消息很清楚:它表示您已经有一个名为 PERSONS_SPATIAL_IDX 的对象。这有什么问题?
-
是的,当我看到索引表时,我看到了 PERSONS_SPATIAL_IDX 的条目。然后我从索引表中删除了每个条目。然后,我再次运行它。但它给了我同样的错误。
-
“删除条目”是什么意思?你
DROP现有索引了吗? -
我用这个删除了
DROP INDEX persons_spatial_idx; -
请编辑您的问题并在问题本身中包含与问题有关的所有信息。谢谢。