故障排除

PostGIS Reader中的表列表

如果表列表在PostGIS读者参数框中没有显示您的表,请尝试以下操作:

  1. 单独输入表名。如果这种方法有效,那么您的表可能没有在PostGIS元数据表中正确注册,或者它可能没有一个几何列。如果这不起作用,尝试下面的步骤2或3。
  2. 输入带有模式前缀的名称,例如public.mytable。如果这行得通,可能意味着您可能没有在设置框中指定要搜索的正确模式。如果这不起作用,请尝试步骤3。
  3. 如果以上两个步骤都不起作用,则可能该表不存在。您可以通过查看PostgreSQL Reader Parameters框提供的表列表来验证这一点。

如果PostGIS Reader Parameters框中的表列表列出了您的表,但您在运行翻译时收到该表不存在的错误消息,那么很可能是PostgreSQL表已被删除,而没有更新PostGIS元数据表。孤立元数据可能会继续存在于PostGIS元数据表中。建议将几何体列的PostGIS元数据表修正为只匹配现有的PostgreSQL表。

连接PostgreSQL/PostGIS数据库

当试图连接PostGIS/PostgreSQL数据库时,有时会出现问题。这几乎总是由于用户环境中的错误配置造成的。

以下建议通常有助于发现和克服这些问题。

  • 确保通过psql或pgAdmin可以通过主机、端口、数据库、用户名和密码连接到数据库。有关正确的安全和连接信息,以及psql实用程序的用法,请参阅PostgreSQL文档。
  • 如果您试图列出表,但没有发生任何事情,请检查日志文件。可能存在未生成对话框的潜在错误。通常这意味着参数不存在或权限不足以访问请求的资源。
  • 在大多数情况下,POSTGIS_DATABASE指令应该保留空值,而POSTGIS_DATASET指令包含PostGIS数据库的名称。
  • 当使用UNIX操作系统时,可以使用环境变量PGHOST、PGPORT、PGDATABASE、PGUSER和PGPASSWORD指定PostgreSQL连接参数。
  • 如果PostGIS阅读器输入设置框中的表列表没有显示您的表,请尝试输入带有模式前缀的名称(例如,public.mytable)。如果这种方法有效,那么您的表可能没有在PostGIS元数据表中正确注册,或者它可能没有一个几何列。
  • 如果PostGIS读取器输入设置框中的表列表列出了您的表,但您在运行翻译时收到该表不存在的错误消息,那么很可能是PostgreSQL表已被删除,而没有更新PostGIS元数据表。孤立元数据可能会继续存在于PostGIS元数据表中。建议将几何体列的PostGIS元数据表修正为只匹配现有的PostgreSQL表。

在其他用户的模式中连接到PostgreSQL/PostGIS表

FME使用Postgres搜索路径来确定要在表列表中显示哪些模式的表。设置用户对某个会话的搜索路径。

SET search_path TO "$user",public;

SET search_path TO "$user",public,schema2,schema3;

设置用户未来所有会话的搜索路径。

ALTER USER SET search_path TO "$ USER ",public;

ALTER USER SET search_path TO "$ USER ",public,schema2,schema3;

查看当前搜索路径:

显示search_path;