在Rails中,使用mysql2 gem从MySQL读取点类型时出现问题

时间:2019-03-01 15:25:22

标签: mysql ruby-on-rails

我正在使用旧版系统进行重构,而在使用“点”数据类型时遇到了麻烦。

在Sequel Pro内部,我可以看到列“位置”值为POINT(-22.81507676827597 -47.07767857976228)

但是当我从数据库中查询它

Mysql2::Client.new(
          host: ENV.fetch('LEGACY_DATABASE_HOST'),
          username: ENV.fetch('LEGACY_DATABASE_USERNAME'),
          password: ENV.fetch('LEGACY_DATABASE_PASSWORD'),
          database: ENV.fetch('LEGACY_DATABASE_NAME')
        ).query("SELECT * FROM local").first('location')

我得到一个奇怪的结果,例如“ \ x00 \ x00 \ x00 \ x00 \ x01 \ x01 \ x00 \ x00 \ x00 \ x84y \ xFF \ xDE \ xA8 \ xD06 \ xC0 \ xE0 \ xD6'_ \ xF1 \ x89G \ xC0”,如果我尝试立即保存,它将变为0。

如何用Rails处理mysql中的点数据类型的正确方法?

1 个答案:

答案 0 :(得分:1)

我强烈建议您使用activerecord-postgis-adapter gem,这使所有操作变得非常简单。尽管如果您自己决定要这样做,请深入研究该宝石,看看它们如何完成point的工作。