mysql - 在 Rails 中,使用 mysql2 gem 从 MySQL 读取点类型时出现问题
问题描述
我正在从遗留系统进行重构,但我遇到了“点”数据类型的问题。
在 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中的点数据类型的正确方法?
解决方案
我强烈建议您使用activerecord-postgis-adapter gem,让这一切变得非常简单。尽管如果您打算自己做,请深入研究那个宝石,看看他们是如何做的point
。
推荐阅读
- sharepoint - SharePoint 创建以外部列表为目标的列表项
- c# - HttpClient PostAsync 未发送正确的请求
- ansible - Ansible 查询数据
- ruby-on-rails - postgresql 不会保存空数组的数组
- javascript - Amcharts v3 多类别阶梯图
- c# - 如何在视图列表中显示
- boost-spirit-x3 - 对于spirit::x3,处理未知符号的正确方法是什么?
- android - 输入 AutoCompleteTextView 输入后,Android 崩溃活动
- spring - 在 Docker Container 中运行时找不到 Eureka 服务
- php - PHP:使用类来存储非动态数据而不是数据库