2

マシンと Heroku の間でタップを使用してデータを移動するという奇妙な経験があります。

私の地理座標の小数点以下の直後に0が失われるように見えることを除いて、正常に動作します。つまり、何らかの理由で50.0519322が50.519322に設定されます...理由はわかりません。

リモートの場所からデータをプルすると、つまり. heroku db:pull... 私のマシンではすべての小数点以下の桁数はそのままで正常に動作しますが、リモート サーバーにプッシュすると、これらのゼロが失われます。特に小数点のすぐ後ろですが、他の場所ではまだ気づいていません。

最初は、緯度と経度を単純な数値として保存していましたが、次のように改良しました。

change_column :places, :lat, :numeric, :precision => 15, :scale => 10
change_column :places, :lng, :numeric, :precision => 15, :scale => 10

結果はありませんが、何が起こっているのでしょうか?

リモートサーバーのコンソールから、緯度を次のように取得します。

#<BigDecimal:2aebcc5967c0,'0.50519322E2',18(18)>

そして私のマシンは:

#<BigDecimal:10232f7c8,'0.50519322E2',12(16)>

これも奇妙です。2 つ目は、ビューで編集すると 50.0519322 と表示されますが、コンソール経由で to_f を実行すると 50.519322 と表示されるためです。

サーバーとローカル マシンは両方とも postgres であり、ストレージは数値として格納されます。

4

1 に答える 1

0

これは Ruby の BigDecimal バグのようです: http://blog.ethanvizitei.com/2010/04/bug-with-bigdecimal-in-ruby-187.html

db:pull開発でdb:pushの使用に最適です。ローカル システムと Heroku の間で変更の可能性がないように、PGBackups システムを使用してデータを移動することをお勧めします。

http://devcenter.heroku.com/articles/pgbackups

于 2011-10-09T00:45:39.623 に答える