Ruby 2.6.5 和 PostgreSQL pg-gem 段错误
Ruby 2.6.5 and PostgreSQL pg-gem segmentation fault
我无法从控制台执行任何涉及数据库的操作。我遇到了分段错误。
.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/pg-1.1.4/lib/pg.rb:56: [BUG] Segmentation fault at 0x0000000000000110
ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-darwin18]
实际上是任何可能需要数据库的操作,包括MyModel.new。
-- Control frame information -----------------------------------------------
c:0071 p:---- s:0406 e:000405 CFUNC :initialize
c:0070 p:---- s:0403 e:000402 CFUNC :new
c:0069 p:0016 s:0398 e:000397 METHOD /Users/xxx/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/pg-1.1.4/lib/pg.rb:56
c:0068 p:0107 s:0393 e:000392 METHOD /Users/xxx/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/connection_adapters/postgres
我已经卸载并重新安装了 pg gem。并重建了数据库。并重新启动 PostgreSQL。
我看到其他人在 Puma 下 运行 时报告问题,但我的配置在 Puma 下工作,在控制台下失败!
为清楚起见编辑:
是的,使用捆绑器。
使用 rails c
或 bundle exec rails c
启动 rails 控制台具有相同的效果(段错误)和相同的堆栈跟踪。
Gemfile.lock 有 pg (1.1.4)
我重新打包了,指定了打包路径。堆栈跟踪现在有那个包路径,所以我猜默认情况下捆绑器使用的是 rbenv 路径。
根据问题评论部分中链接的 https://github.com/ged/ruby-pg/issues/291,将 gssencmode: disable
添加到 database.yml
会停止分段错误。我只在 development
和 test
环境选项下添加了它,因为我在其他环境中不使用 OS X:
default: &default
adapter: postgresql
development:
<<: *default
gssencmode: disable
test:
<<: *default
gssencmode: disable
在 Postgresql 12 中添加了 gssencmode:
gssencmode
This option determines whether or with what priority a secure GSS TCP/IP connection will be negotiated with the server.
这里跟踪了潜在的错误https://www.postgresql.org/message-id/93f7379b-2e2f-db0c-980e-07ebd5de92ff%40crunchydata.com
我无法从控制台执行任何涉及数据库的操作。我遇到了分段错误。
.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/pg-1.1.4/lib/pg.rb:56: [BUG] Segmentation fault at 0x0000000000000110
ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-darwin18]
实际上是任何可能需要数据库的操作,包括MyModel.new。
-- Control frame information -----------------------------------------------
c:0071 p:---- s:0406 e:000405 CFUNC :initialize
c:0070 p:---- s:0403 e:000402 CFUNC :new
c:0069 p:0016 s:0398 e:000397 METHOD /Users/xxx/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/pg-1.1.4/lib/pg.rb:56
c:0068 p:0107 s:0393 e:000392 METHOD /Users/xxx/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/connection_adapters/postgres
我已经卸载并重新安装了 pg gem。并重建了数据库。并重新启动 PostgreSQL。
我看到其他人在 Puma 下 运行 时报告问题,但我的配置在 Puma 下工作,在控制台下失败!
为清楚起见编辑:
是的,使用捆绑器。
使用 rails c
或 bundle exec rails c
启动 rails 控制台具有相同的效果(段错误)和相同的堆栈跟踪。
Gemfile.lock 有 pg (1.1.4)
我重新打包了,指定了打包路径。堆栈跟踪现在有那个包路径,所以我猜默认情况下捆绑器使用的是 rbenv 路径。
根据问题评论部分中链接的 https://github.com/ged/ruby-pg/issues/291,将 gssencmode: disable
添加到 database.yml
会停止分段错误。我只在 development
和 test
环境选项下添加了它,因为我在其他环境中不使用 OS X:
default: &default
adapter: postgresql
development:
<<: *default
gssencmode: disable
test:
<<: *default
gssencmode: disable
在 Postgresql 12 中添加了 gssencmode:
gssencmode
This option determines whether or with what priority a secure GSS TCP/IP connection will be negotiated with the server.
这里跟踪了潜在的错误https://www.postgresql.org/message-id/93f7379b-2e2f-db0c-980e-07ebd5de92ff%40crunchydata.com