Rails生产环境PostgreSQL报unrecognized node type:112警告,无法更新FriendlyID Slug
解决Rails生产环境PostgreSQL的"unrecognized node type: 112"警告
检查PostgreSQL版本一致性
这个警告大多源于开发、生产环境的PostgreSQL版本不匹配,不同版本对内部解析节点的类型定义有差异。分别在本地和生产环境执行psql --version确认版本,尽量将生产环境版本升级至与开发环境一致的稳定版本。更新pg gem
Rails通过pg gem与PostgreSQL交互,旧版本gem可能不兼容生产环境的数据库版本。执行bundle update pg更新gem,完成后重新部署应用到生产环境。修复FriendlyID Slug更新问题
针对FriendlyID无法更新Slug的情况,可在生产控制台手动重新生成Slug:# 替换YourModel为实际模型名,:title为Slug生成字段 YourModel.all.each { |item| item.friendly_id(:title).save }数据量较大时分批处理避免超时:
YourModel.find_in_batches(batch_size: 50) do |batch| batch.each { |item| item.friendly_id(:title).save } end检查并安装必要数据库扩展
如果FriendlyID用到了模糊匹配功能,需确保生产数据库安装了pg_trgm扩展:CREATE EXTENSION IF NOT EXISTS pg_trgm;执行后重启PostgreSQL服务。
重启应用与数据库服务
缓存或连接池残留可能引发此类警告,先重启Rails应用服务器,再重启PostgreSQL服务,清除无效连接与缓存。
内容的提问来源于stack exchange,提问作者Anne Lalsingh
相关产品推荐
相关产品推荐

