使用 Arcpy 注册空间表到地理数据库报错

使用 Arcpy 中的CreateEnterpriseGeodatabase_management 创建企业级地理数据库,这一步成功。

使用 SQL 脚本直接在数据库中创建普通表和空间表,空间表的 SQL 脚本中已经包含有 bsm(int 类型)和 shape (st_geometry 类型)两个字段。这一步成功。

使用 Arcpy 中的 RegisterWithGeodatabase_management 将空间表注册到地理数据库,这一步失败。

精简后的 SQL 脚本 如下:
CREATE TABLE xzdw( bsm integer NOT NULL, ysdm character varying(6), dwmc character varying(10), cd numeric(10,2), kd numeric(10,2), szdy character varying(14), bz character varying(50), shape st_geometry)WITH ( OIDS=FALSE);ALTER TABLE xzdw OWNER TO sde;GRANT ALL ON TABLE xzdw TO sde;
精简后的注册空间表 Python 脚本如下:
import arcpyarcpy.Register
With Geodatabase_management(rDatabase Connections\PostgreSQL.test1(localhost).sde\test1.sde.xzdw, bsm, shape, POLYGON)

报错的内容如下:
Traceback (most recent call last): File G:\Projects\新建文件夹\dotnet_desktop_shanxi_ny_datamanagement\SourceCode\Client\Entry\Data\Install\ArcGIS10.5\PostgreSQL\RegisterWithGeodatabase2.py, line 3, in <module> arcpy.RegisterWithGeodatabase_management(rDatabase Connections\PostgreSQL.test1(localhost).sde\test1.sde.xzdw, bsm, shape, POLYGON) File C:\Program Files (x86)\ArcGIS\Desktop10.5\ArcPy\arcpy\management.py, line 5499, in RegisterWithGeodatabase raise eExecuteError: ERROR 999999: Error executing function.General function failureFailed to execute (RegisterWithGeodatabase).
以上错误是什么原因导致的?能否解决?

直接使用 ArcCatalog 中的 Register With Geodatabase 功能注册,则可以成功,但这种方式需要手动一个一个的点,效率很低,期望能用脚本来完成。
已邀请:

徐珂 - ArcGIS for Desktop

赞同来自:

【解决办法】:
这个问题是一个bug,BUG-000107280: The RegisterWithGeodatabase function fails on an empty spatial table while the Register With Geodatabase geoprocessing tool succeeds.

解决方法是在现在表中插入至少一条带有几何信息的记录。
 
ArcMap 10.6, ArcGIS Pro 2.1版本会修复此问题。

要回复问题请先登录注册