【发布时间】:2022-01-22 11:25:38
【问题描述】:
我正在设置一个小型 Rails 内部网应用程序,并在部署过程中遇到了一个令人困惑的错误。 staging 应用程序部署良好,我可以访问各种 API 端点,这些端点显示有关 Postgres 数据库内容的基本信息(某个表上的 COUNT 等)
但是当我将同一个应用程序部署到生产环境时,第一次尝试运行任何数据库查询时,它会触发 500 响应并记录此异常:
ArgumentError (invalid byte sequence in UTF-8)
我假设这个错误告诉我连接到数据库时出现问题,或者可能是解析数据库查询返回的数据时出现问题,但没有显示堆栈跟踪,我无法找出问题所在。我已经对database.yml 中的连接设置进行了双重和三重检查,它(在暂存和生产中)设置了从 Rails 加密密钥中获取的数据库 URL。
数据库 URL 采用标准格式,与我在其他几个 Rails 应用程序中使用的相同:postgres://username:password@hostname:5432/dbname
我可以使用psql 直接连接到这些数据库URL 中的任何一个都没有问题。问题不在于加密的机密文件,因为即使我将数据库 URL 硬编码为 database.yml,它仍然存在。
我应该从这里去哪里?找出此错误根源的最佳做法是什么?
【问题讨论】:
标签: ruby-on-rails database postgresql