2017-04-22 9 views
0

アプリケーションを本番環境に複製すると、私のPOSTGISテーブルの列が正しく動作しなくなり、Railsは「不明なOID 26865」があり、フィールドがStringとして扱われることを通知しました。Railsの「不明なOID」エラーの原因は何ですか?

eを生成するcurrent_posの代わりに。 g。 #<RGeo::Geographic::SphericalPointImpl:0x22fabdc "POINT (13.39318248760133 52.52908798020595)">0101000020E6100000FFDD958664C92A403619DEE6B2434A40となります。 activerecord-postgis-adapterがインストールされていないか、ひどくインストールされているように見えましたが、データ型RGeo :: Feature :: Pointが存在するかどうかテストし、フィールドに current_pos = "POINT (13.39318248760133 52.52908798020595)" を割り当てて、エラーなしで進んだが、上記のような理解できない別の16進文字列を生成した。

また、奇妙なことに、POSTGISはデータベース内で正しく動作していました。 ST_DISTANCE照会に対して正しい結果が得られます。このように、書き込み、書き込み構文解析(ポイントから16進形式への変換)、SQLによる操作、およびすべての読み込みが行われた場合、読み込み時の構文解析だけが行われなかった非常に限られた問題です。

私はデータベースの列が

undefined method `st_point' for #<ActiveRecord::ConnectionAdapters::PostgreSQL::TableDefinition:0x00000005cb80b8> 

答えて

2

を与え、移行が失敗し、正しい型を持っているでしょう確保するためにマイグレーションを使用しようとしたとき、私も再インストールするサーバから、ソリューションのすべての種類を試して数時間を過ごしましたRubyの少し新しいバージョンをインストールし、少し古いバージョンのPOSTGIS(私の他の環境に合うように)をインストールし、データベースをエクスポートし、クリーンなものから開始するなどの作業を行います。私は移行を行って "未定義のメソッドst_point"エラーになった後、Githubの問題でGoogleを介してソリューションを見つけることができました。それは本当に簡単です:

config/database.ymlでは、 postgres://のpostgis://データベースURLにスワップアウトします。

production: 
    url: <%= ENV.fetch('DATABASE_URL', '').sub(/^postgres/, "postgis") %> 

だから、愚かな...

:あなたはHerokuのを使用している場合、これはいくつかの醜い操作が必要な場合があります
関連する問題