【问题标题】:Segmentation Fault on MySQL2 / Ruby 1.9.3 / Rails 3.2MySQL2 / Ruby 1.9.3 / Rails 3.2 上的分段错误
【发布时间】:2012-03-28 20:29:32
【问题描述】:

我一直很难让 rails 3.2 与 mysql2 一起工作。
我正在运行 OSX 10.6、MySQL 5.1.37

我得到了这个可爱的堆栈跟踪。

HunterMBP:v hunter$ bundle exec rake db:create
/Users/hunter/.rvm/gems/ruby-1.9.3-p125/gems/mysql2-0.3.2/lib/mysql2/mysql2.bundle: [BUG] Segmentation fault
ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-darwin10.8.0]

-- Control frame information -----------------------------------------------
c:0033 p:-543968548 s:0099 b:0099 l:000098 d:000098 TOP   
c:0032 p:---- s:0097 b:0097 l:000096 d:000096 CFUNC  :require
c:0031 p:0107 s:0093 b:0093 l:000092 d:000092 TOP    /Users/hunter/.rvm/gems/ruby-1.9.3-p125/gems/mysql2-0.3.2/lib/mysql2.rb:8
c:0030 p:---- s:0091 b:0091 l:000090 d:000090 FINISH
c:0029 p:---- s:0089 b:0089 l:000088 d:000088 CFUNC  :require
c:0028 p:0026 s:0085 b:0085 l:000065 d:000084 BLOCK  /Users/hunter/.rvm/gems/ruby-1.9.3-p125/gems/bundler-1.1.0/lib/bundler/runtime.rb:68
c:0027 p:---- s:0082 b:0082 l:000081 d:000081 FINISH
c:0026 p:---- s:0080 b:0080 l:000079 d:000079 CFUNC  :each
c:0025 p:0091 s:0077 b:0077 l:000065 d:000076 BLOCK  /Users/hunter/.rvm/gems/ruby-1.9.3-p125/gems/bundler-1.1.0/lib/bundler/runtime.rb:66
c:0024 p:---- s:0071 b:0071 l:000070 d:000070 FINISH
c:0023 p:---- s:0069 b:0069 l:000068 d:000068 CFUNC  :each
c:0022 p:0046 s:0066 b:0066 l:000065 d:000065 METHOD /Users/hunter/.rvm/gems/ruby-1.9.3-p125/gems/bundler-1.1.0/lib/bundler/runtime.rb:55
c:0021 p:0021 s:0062 b:0062 l:000061 d:000061 METHOD /Users/hunter/.rvm/gems/ruby-1.9.3-p125/gems/bundler-1.1.0/lib/bundler.rb:118
c:0020 p:0137 s:0058 b:0058 l:000057 d:000057 TOP    /Users/hunter/Workspace/Projects/Visionare/config/application.rb:13
c:0019 p:---- s:0056 b:0056 l:000055 d:000055 FINISH
c:0018 p:---- s:0054 b:0054 l:000053 d:000053 CFUNC  :require
c:0017 p:0026 s:0050 b:0050 l:000049 d:000049 TOP    /Users/hunter/Workspace/Projects/Visionare/Rakefile:5
c:0016 p:---- s:0048 b:0048 l:000047 d:000047 FINISH
c:0015 p:---- s:0046 b:0046 l:000045 d:000045 CFUNC  :load
c:0014 p:0013 s:0042 b:0042 l:000041 d:000041 METHOD /Users/hunter/.rvm/gems/ruby-1.9.3-p125/gems/rake-0.9.2.2/lib/rake/rake_module.rb:25
c:0013 p:0274 s:0038 b:0038 l:000037 d:000037 METHOD /Users/hunter/.rvm/gems/ruby-1.9.3-p125/gems/rake-0.9.2.2/lib/rake/application.rb:501
c:0012 p:0009 s:0033 b:0033 l:000026 d:000032 BLOCK  /Users/hunter/.rvm/gems/ruby-1.9.3-p125/gems/rake-0.9.2.2/lib/rake/application.rb:82
c:0011 p:0009 s:0031 b:0031 l:000030 d:000030 METHOD /Users/hunter/.rvm/gems/ruby-1.9.3-p125/gems/rake-0.9.2.2/lib/rake/application.rb:133
c:0010 p:0011 s:0027 b:0027 l:000026 d:000026 METHOD /Users/hunter/.rvm/gems/ruby-1.9.3-p125/gems/rake-0.9.2.2/lib/rake/application.rb:81
c:0009 p:0019 s:0024 b:0024 l:000017 d:000023 BLOCK  /Users/hunter/.rvm/gems/ruby-1.9.3-p125/gems/rake-0.9.2.2/lib/rake/application.rb:65
c:0008 p:0009 s:0022 b:0022 l:000021 d:000021 METHOD /Users/hunter/.rvm/gems/ruby-1.9.3-p125/gems/rake-0.9.2.2/lib/rake/application.rb:133
c:0007 p:0011 s:0018 b:0018 l:000017 d:000017 METHOD /Users/hunter/.rvm/gems/ruby-1.9.3-p125/gems/rake-0.9.2.2/lib/rake/application.rb:63
c:0006 p:0060 s:0015 b:0015 l:000014 d:000014 TOP    /Users/hunter/.rvm/gems/ruby-1.9.3-p125/gems/rake-0.9.2.2/bin/rake:33
c:0005 p:---- s:0013 b:0013 l:000012 d:000012 FINISH
c:0004 p:---- s:0011 b:0011 l:000010 d:000010 CFUNC  :load
c:0003 p:0127 s:0007 b:0007 l:002398 d:001e70 EVAL   /Users/hunter/.rvm/gems/ruby-1.9.3-p125/bin/rake:19
c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH
c:0001 p:0000 s:0002 b:0002 l:002398 d:002398 TOP   

-- Ruby level backtrace information ----------------------------------------
/Users/hunter/.rvm/gems/ruby-1.9.3-p125/bin/rake:19:in `<main>'
/Users/hunter/.rvm/gems/ruby-1.9.3-p125/bin/rake:19:in `load'
/Users/hunter/.rvm/gems/ruby-1.9.3-p125/gems/rake-0.9.2.2/bin/rake:33:in `<top (required)>'
/Users/hunter/.rvm/gems/ruby-1.9.3-p125/gems/rake-0.9.2.2/lib/rake/application.rb:63:in `run'
/Users/hunter/.rvm/gems/ruby-1.9.3-p125/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/Users/hunter/.rvm/gems/ruby-1.9.3-p125/gems/rake-0.9.2.2/lib/rake/application.rb:65:in `block in run'
/Users/hunter/.rvm/gems/ruby-1.9.3-p125/gems/rake-0.9.2.2/lib/rake/application.rb:81:in `load_rakefile'
/Users/hunter/.rvm/gems/ruby-1.9.3-p125/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/Users/hunter/.rvm/gems/ruby-1.9.3-p125/gems/rake-0.9.2.2/lib/rake/application.rb:82:in `block in load_rakefile'
/Users/hunter/.rvm/gems/ruby-1.9.3-p125/gems/rake-0.9.2.2/lib/rake/application.rb:501:in `raw_load_rakefile'
/Users/hunter/.rvm/gems/ruby-1.9.3-p125/gems/rake-0.9.2.2/lib/rake/rake_module.rb:25:in `load_rakefile'
/Users/hunter/.rvm/gems/ruby-1.9.3-p125/gems/rake-0.9.2.2/lib/rake/rake_module.rb:25:in `load'
/Users/hunter/Workspace/Projects/Visionare/Rakefile:5:in `<top (required)>'
/Users/hunter/Workspace/Projects/Visionare/Rakefile:5:in `require'
/Users/hunter/Workspace/Projects/Visionare/config/application.rb:13:in `<top (required)>'
/Users/hunter/.rvm/gems/ruby-1.9.3-p125/gems/bundler-1.1.0/lib/bundler.rb:118:in `require'
/Users/hunter/.rvm/gems/ruby-1.9.3-p125/gems/bundler-1.1.0/lib/bundler/runtime.rb:55:in `require'
/Users/hunter/.rvm/gems/ruby-1.9.3-p125/gems/bundler-1.1.0/lib/bundler/runtime.rb:55:in `each'
/Users/hunter/.rvm/gems/ruby-1.9.3-p125/gems/bundler-1.1.0/lib/bundler/runtime.rb:66:in `block in require'
/Users/hunter/.rvm/gems/ruby-1.9.3-p125/gems/bundler-1.1.0/lib/bundler/runtime.rb:66:in `each'
/Users/hunter/.rvm/gems/ruby-1.9.3-p125/gems/bundler-1.1.0/lib/bundler/runtime.rb:68:in `block (2 levels) in require'
/Users/hunter/.rvm/gems/ruby-1.9.3-p125/gems/bundler-1.1.0/lib/bundler/runtime.rb:68:in `require'
/Users/hunter/.rvm/gems/ruby-1.9.3-p125/gems/mysql2-0.3.2/lib/mysql2.rb:8:in `<top (required)>'
/Users/hunter/.rvm/gems/ruby-1.9.3-p125/gems/mysql2-0.3.2/lib/mysql2.rb:8:in `require'

Gemfile 看起来像这样:

    source 'https://rubygems.org'
gem 'rails', '3.2.2'
#gem 'json'
gem "mysql2"
group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'
  gem 'uglifier', '>= 1.0.3'
end
gem 'jquery-rails'
gem "rspec-rails", ">= 2.8.1", :group => [:development, :test]
gem "factory_girl_rails", ">= 1.7.0", :group => :test
gem "email_spec", ">= 1.2.1", :group => :test
gem "cucumber-rails", ">= 1.3.0", :group => :test
gem "capybara", ">= 1.1.2", :group => :test
gem "database_cleaner", ">= 0.7.1", :group => :test
gem "launchy", ">= 2.0.5", :group => :test
gem "devise", ">= 2.0.4"

我有 rails 3.2 和 ruby​​ 1.9.3

bundle install 成功生成了这个列表。

Using rake (0.9.2.2) 
Using i18n (0.6.0) 
Using multi_json (1.1.0) 
Using activesupport (3.2.2) 
Using builder (3.0.0) 
Using activemodel (3.2.2) 
Using erubis (2.7.0) 
Using journey (1.0.3) 
Using rack (1.4.1) 
Using rack-cache (1.2) 
Using rack-test (0.6.1) 
Using hike (1.2.1) 
Using tilt (1.3.3) 
Using sprockets (2.1.2) 
Using actionpack (3.2.2) 
Using mime-types (1.17.2) 
Using polyglot (0.3.3) 
Using treetop (1.4.10) 
Using mail (2.4.3) 
Using actionmailer (3.2.2) 
Using arel (3.0.2) 
Using tzinfo (0.3.32) 
Using activerecord (3.2.2) 
Using activeresource (3.2.2) 
Using addressable (2.2.7) 
Using bcrypt-ruby (3.0.1) 
Using nokogiri (1.5.2) 
Using ffi (1.0.11) 
Using childprocess (0.3.1) 
Using rubyzip (0.9.6.1) 
Using selenium-webdriver (2.20.0) 
Using xpath (0.1.4) 
Using capybara (1.1.2) 
Using coffee-script-source (1.2.0) 
Using execjs (1.3.0) 
Using coffee-script (2.2.0) 
Using rack-ssl (1.3.2) 
Using json (1.6.5) 
Using rdoc (3.12) 
Using thor (0.14.6) 
Using railties (3.2.2) 
Using coffee-rails (3.2.2) 
Using diff-lcs (1.1.3) 
Using gherkin (2.9.0) 
Using term-ansicolor (1.0.7) 
Using cucumber (1.1.9) 
Using cucumber-rails (1.3.0) 
Using database_cleaner (0.7.1) 
Using orm_adapter (0.0.6) 
Using warden (1.1.1) 
Using devise (2.0.4) 
Using rspec-core (2.8.0) 
Using rspec-expectations (2.8.0) 
Using rspec-mocks (2.8.0) 
Using rspec (2.8.0) 
Using email_spec (1.2.1) 
Using factory_girl (2.6.3) 
Using factory_girl_rails (1.7.0) 
Using jquery-rails (2.0.1) 
Using launchy (2.0.5) 
Using mysql2 (0.3.2) 
Using bundler (1.1.0) 
Using rails (3.2.2) 
Using rspec-rails (2.8.1) 
Using sass (3.1.15) 
Using sass-rails (3.2.4) 
Using uglifier (1.2.3) 

【问题讨论】:

  • 你有哪个 XCode 版本? > 4.1 ?你是怎么安装mysql的?
  • 我不确定,它在我的家用笔记本电脑上,我现在正在工作。我可以告诉你,带有 ruby​​ 1.8.7 和 mysql2 gem 的 rails 3.1 项目运行良好。我还读到对 mysql2 的活动记录支持被带入本机库?这对 mysql2 gem 的使用有何影响?
  • 我没有用 Snow Leopard 测试过,但是在 Lion 上,gem 有很多问题(尤其是数据库驱动程序)。这是由于 XCode > 4.1 引入了新的 C 编译器。如果你已经用homebrew安装了mysql服务器,你可以尝试使用these instructions

标签: mysql ruby-on-rails ruby macos


【解决方案1】:
rvm reset

然后运行

bundle install

帮我解决了这个问题:)

【讨论】:

    【解决方案2】:

    试试

    rvm reset
    

    我只是有一个类似的错误

    【讨论】:

    【解决方案3】:

    我也遇到了这个错误,我的搜索带来了这个线程。

    在我的特定实例中,我遇到分段错误,但仅在向数据库发出更新语句时。

    到目前为止,我发现它正在修复它,并且作为一名 IT 人员,我只阅读了一次手册,而谷歌无法找到答案。

    mysql-2.8.1-x86-mingw32 文档提到以下内容

    关于不兼容 MySQL 版本的警告

    混合 MySQL 版本会产生分段错误。

    针对不同版本的运行此 gem 的二进制版本 MySQL 共享库 libMySQL.dll 会产生分段错误 并终止您的申请。

    如此深入研究,我发现“针对 MySQL 5.0.83 构建的二进制版本” 但是我正在运行 5.1.37 -_- 所以我必须找到更新的 API 或降级我的 mysql 数据库服务器,看看是否能解决问题。

    我还没有解决这个问题,但这可能对你有用也可能没用,但由于我在其他文章中没有看到这一点,我认为我应该分享我的“启示”。

    更新: 嗯,好的,我决定更新 mysql api,他们现在对其进行了一些关键更改,至少如果它不兼容,它会在启动时引发错误。 “不正确的 MySQL 客户端库版本!这个 gem 是为 6.0.0 编译的,但客户端库是 5.1.37。(RuntimeError)” 6.0.0 让我想知道,但是在 mysql 网站上还可以,但是,嘿,mysql 网站上没有提到 6.0.0。

    好的,我的开发环境有点过时了,但是我在哪里可以获得客户端版本 6? 最后一个问题:http://dev.mysql.com/downloads/connector/c/

    另一个更新: 好吧,看起来他们至少为我修好了。 确保您的连接器/c 版本与构建 mysql api 的版本相匹配。 我安装了 6.0.0 并且没有更多的分段错误。 因为当前是 6.0.2,所以你仍然可以获得 6.0.0 并不明显,但这里有一个链接 http://mirror.services.wisc.edu/mysql/Downloads/Connector-C/ 或者您安装一个匹配版本的连接器(不必匹配您的 DBserver 版本)

    【讨论】:

      【解决方案4】:

      我在使用 Ruby 1.9.3p125 时遇到了很多分段错误错误,您是否尝试使用 Ruby 1.9.3p0 运行这些错误?遇到此类问题后,我又回到了它。如果 p0 有效,则在 ruby​​ 跟踪器上提出问题单。

      【讨论】:

        【解决方案5】:

        在启动 ruby​​ 之前执行这个命令:

        export RUBYOPT="-r openssl"
        

        【讨论】:

          【解决方案6】:

          上述错误主要是ruby和rails升级造成的。当我将我的 ruby​​ 版本升级到 2.0 并将 rails 版本升级到 4.0 时,我遇到了这个问题。使用旧版本的项目面临此类问题,因为这些 gem 是由旧版本的 ruby​​ 编译的。它首先显示了 mysql2 的错误,并且它也继续显示其他 gem。解决方案是卸载导致错误的 gem 并将其重新安装。顺便说一句,gem 编译版本中的不匹配问题已得到纠正,现在它可以工作了。

          您需要对所有导致问题的 gem 重复该过程,直到您能够运行服务器。

          【讨论】:

            【解决方案7】:

            我遇到了这个问题,rbenv rehash 解决了它。

            【讨论】:

              猜你喜欢
              • 2013-03-13
              • 1970-01-01
              • 1970-01-01
              • 2013-09-15
              • 1970-01-01
              • 2012-01-04
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多