【发布时间】:2014-07-06 01:51:34
【问题描述】:
我有一个奇怪的问题。我的应用程序中的 lonlat 列在开发服务器上运行良好——它的输出是 POINT(X Y) 的形式。但是当我将数据移动到生产服务器时,输出很奇怪!
ActionView::Template::Error(“0101000020E6100000541B9C887E7A52C02920ED7F80614440”的未定义方法“lon”:字符串):
使用 SRID: 4326 编码的 lonlat 值正在作为字符串读取。我几乎可以肯定,在将数据从开发迁移到生产期间,数据存在损坏,因为在迁移之前这不是问题。
有谁知道数据库架构或列可能会导致此问题吗?
【问题讨论】:
-
如何在服务器之间移动数据?在新服务器中,列仍然是几何图形?在您的应用中,您是如何阅读专栏的?
-
我分两步移动数据。首先,我转储数据库的模式 (
pg_dump --schema-only -C -c) 并使用psql在远程服务器中恢复它。其次,我用pg_dump --data-only -C将数据转储出来,并执行与上述相同的操作来恢复它。 -
远程服务器上的 lonlat 列还是输入
geometry(Point,4326)。 -
我只记得我做了另一件事。在移动数据之前,我终止了与服务器的所有其他连接——包括 Rails 应用程序的连接。不确定这是否会导致我的问题。我的感觉是模式 search_path 与此有关。如果重新建立连接时postgis不在搜索路径中,那么app就不能使用postgis功能了吧?
-
但是当我在本地终止连接时,应用程序似乎运行正常。所以......我仍然不确定发生了什么。
标签: postgresql postgis