Sug*_*jan 11 postgresql ruby-on-rails ruby-on-rails-6.1 ruby-3
我有
Ruby 3.0.4
Rails 6.1.7
pg 1.4.5
postgresql 14.6
Run Code Online (Sandbox Code Playgroud)
这是我的database.yml 文件
development:
adapter: postgresql
encoding: utf8
database: olio_development
username: postgres
password: password
pool: 5
host: 127.0.0.1
port: 5432
gssencmode: disable
Run Code Online (Sandbox Code Playgroud)
当我运行 rake db:create 时,出现以下分段错误
/home/usr/.rvm/gems/ruby-3.0.4/gems/pg-1.4.5/lib/pg/connection.rb:626: [BUG] Segmentation fault at 0x00007fd79729a140
Run Code Online (Sandbox Code Playgroud)
ruby 3.0.4p208(2022-04-12 修订版 3fa771dded)[x86_64-linux]
-- Control frame information -----------------------------------------------
c:0050 p:---- s:0275 e:000274 CFUNC :connect_poll
c:0049 p:0543 s:0271 e:000270 METHOD /home/suganya/.rvm/gems/ruby-3.0.4/gems/pg-1.4.5/lib/pg/connection.rb:626
Run Code Online (Sandbox Code Playgroud)
连接失败。
我已经验证 postgres 正在运行并且位于主机 127.0.0.1 和帖子 5432 上。
请帮我解决这个分段错误?
Ant*_*pov 22
我在寻找类似问题的解决方案时遇到了这个问题。因此,将发布对我有用的修复程序,也许对其他人会有帮助。
我的环境:
Ruby 3.2.2
Rails 7.0.4.3
pg 1.4.5
postgresql 14.9
Run Code Online (Sandbox Code Playgroud)
添加以下行.zshrc(并重新启动终端)解决了我的问题:
Ruby 3.2.2
Rails 7.0.4.3
pg 1.4.5
postgresql 14.9
Run Code Online (Sandbox Code Playgroud)
此Github Issue 评论提供了有关根本原因以及您看到它的原因的更多背景信息。它包括一些可能的解决方案,包括上面的解决方案:
- 通过
PGGSSENCMODE=disable环境变量禁用 GSSAPI 或传入gssencmode=disable连接字符串。- 通过在分叉之前预加载应用程序来启动数据库连接,以便在父进程中调用 macOS 系统调用。在 Puma 中,
preload_app!配置选项可以执行此操作。- 使用未启用的 PostgreSQL 服务器
--with-gssapi。默认情况下,我相信 Homebrew 版本有这个,但 asdf 不会用这个安装 PostgreSQL。您可以使用 进行检查otool -L。
编辑:原始问题中描述的段错误是由 PG 客户端库引起的,而不是 pg gem 引起的,所以这个答案对它没有帮助。请参阅上面的答案。然而,当您开始突然看到故障时,固定gem的旧版本始终是一个合理的故障排除步骤,您可以\xe2\x80\x99t否则在称为[二分](https://en.m.wikipedia)的过程中进行调试。 org/wiki/Bisection_(软件工程)。
\n我看到 pg gem ( https://github.com/ged/ruby-pg/issues/493 ) 的 GitHub 问题与您的问题相匹配,因此这可能是 pg v1.4.5 的错误。我会尝试将其固定到旧版本:
\ngem \'pg\', \'1.4.4\'\nRun Code Online (Sandbox Code Playgroud)\n如果仍然存在问题,请向后退一步。您还可以将您的信息添加到上面链接的 GitHub 问题中,以帮助维护人员解决问题。
\n