#mysql #ruby-on-rails-3 #macos #installation #mysql2
#mysql #ruby-on-rails-3 #macos #установка #mysql2
Вопрос:
Шаг 1:—
rails s/usr/local/rvm/gems/ruby-1.9.2-p180/gems/mysql2-0.3.2/lib/mysql2.rb:8:in `require': dlopen(/usr/local/rvm/gems/ruby-1.9.2-p180/gems/mysql2-0.3.2/lib/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.16.dylib (LoadError)
Referenced from: /usr/local/rvm/gems/ruby-1.9.2-p180/gems/mysql2-0.3.2/lib/mysql2/mysql2.bundle
Reason: image not found - /usr/local/rvm/gems/ruby-1.9.2-p180/gems/mysql2-0.3.2/lib/mysql2/mysql2.bundle
from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/mysql2-0.3.2/lib/mysql2.rb:8:in `<top (required)>'
from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler/runtime.rb:68:in `require'
from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler/runtime.rb:68:in `block (2 levels) in require'
from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler/runtime.rb:66:in `each'
from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler/runtime.rb:66:in `block in require'
from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler/runtime.rb:55:in `each'
from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler/runtime.rb:55:in `require'
from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler.rb:120:in `require'
from /Users/mohit/projects/lbs_admin/config/application.rb:7:in `<top (required)>'
from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.3/lib/rails/commands.rb:28:in `require'
from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.3/lib/rails/commands.rb:28:in `block in <top (required)>'
from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.3/lib/rails/commands.rb:27:in `tap'
from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.3/lib/rails/commands.rb:27:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
ШАГ 2:—
sudo install_name_tool -change libmysqlclient.16.dylib /usr/local/mysql-5.5.9-osx10.6-x86_64/lib/libmysqlclient.16.dylib /usr/local/rvm/gems/ruby-1.9.2-p180/gems/mysql2-0.3.2/lib/mysql2/mysql2.bundle
Результат:—
rails sWARNING: This version of mysql2 (0.3.2) doesn't ship with the ActiveRecord adapter bundled anymore as it's now part of Rails 3.1
WARNING: Please use the 0.2.x releases if you plan on using it in Rails <= 3.0.x
=> Booting WEBrick
=> Rails 3.0.3 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
Exiting
/usr/local/rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_specification.rb:71:in `rescue in establish_connection': Please install the mysql2 adapter: `gem install activerecord-mysql2-adapter` (no such file to load -- active_record/connection_adapters/mysql2_adapter) (RuntimeError)
from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_specification.rb:68:in `establish_connection'
from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_specification.rb:60:in `establish_connection'
from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_specification.rb:55:in `establish_connection'
from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.0.3/lib/active_record/railtie.rb:59:in `block (2 levels) in <class:Railtie>'
from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/activesupport-3.0.3/lib/active_support/lazy_load_hooks.rb:36:in `instance_eval'
from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/activesupport-3.0.3/lib/active_support/lazy_load_hooks.rb:36:in `execute_hook'
from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/activesupport-3.0.3/lib/active_support/lazy_load_hooks.rb:43:in `block in run_load_hooks'
from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/activesupport-3.0.3/lib/active_support/lazy_load_hooks.rb:42:in `each'
from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/activesupport-3.0.3/lib/active_support/lazy_load_hooks.rb:42:in `run_load_hooks'
from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.0.3/lib/active_record/base.rb:1891:in `<top (required)>'
from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/will_paginate-3.0.pre2/lib/will_paginate/finders/active_record.rb:31:in `enable!'
from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/will_paginate-3.0.pre2/lib/will_paginate/railtie.rb:9:in `block in <class:Railtie>'
from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.3/lib/rails/initializable.rb:25:in `instance_exec'
from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.3/lib/rails/initializable.rb:25:in `run'
from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.3/lib/rails/initializable.rb:50:in `block in run_initializers'
from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.3/lib/rails/initializable.rb:49:in `each'
from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.3/lib/rails/initializable.rb:49:in `run_initializers'
from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.3/lib/rails/application.rb:134:in `initialize!'
from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.3/lib/rails/application.rb:77:in `method_missing'
from /Users/mohit/projects/lbs_admin/config/environment.rb:5:in `<top (required)>'
from /Users/mohit/projects/lbs_admin/config.ru:3:in `require'
from /Users/mohit/projects/lbs_admin/config.ru:3:in `block in <main>'
from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/rack-1.2.2/lib/rack/builder.rb:46:in `instance_eval'
from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/rack-1.2.2/lib/rack/builder.rb:46:in `initialize'
from /Users/mohit/projects/lbs_admin/config.ru:1:in `new'
from /Users/mohit/projects/lbs_admin/config.ru:1:in `<main>'
from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/rack-1.2.2/lib/rack/builder.rb:35:in `eval'
from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/rack-1.2.2/lib/rack/builder.rb:35:in `parse_file'
from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/rack-1.2.2/lib/rack/server.rb:162:in `app'
from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/rack-1.2.2/lib/rack/server.rb:248:in `wrapped_app'
from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/rack-1.2.2/lib/rack/server.rb:213:in `start'
from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.3/lib/rails/commands/server.rb:65:in `start'
from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.3/lib/rails/commands.rb:30:in `block in <top (required)>'
from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.3/lib/rails/commands.rb:27:in `tap'
from /usr/local/rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.3/lib/rails/commands.rb:27:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
Шаг 3:—
sudo gem uninstall mysql2
sudo env ARCHFLAGS="-arch i386" gem install mysql2 -- --with-mysql-config=/usr/local/mysql-5.5.9-osx10.6-x86_64/bin/mysql_config
Текущее состояние:—
ruby -v
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-darwin10.7.0]
rails -v
Rails 3.0.3
список драгоценных камней
*** LOCAL GEMS ***
abstract (1.0.0)
actionmailer (3.0.7, 3.0.3)
actionpack (3.0.7, 3.0.3)
activemodel (3.0.7, 3.0.3)
activerecord (3.0.7, 3.0.3)
activeresource (3.0.7, 3.0.3)
activesupport (3.0.7, 3.0.3)
annotate-models (1.0.4)
arel (2.0.9)
builder (2.1.2)
bundler (1.0.12)
erubis (2.6.6)
i18n (0.5.0)
mail (2.2.19)
mime-types (1.16)
mysql2 (0.3.2)
polyglot (0.3.1)
rack (1.2.2)
rack-mount (0.6.14)
rack-test (0.5.7)
rails (3.0.7, 3.0.3)
railties (3.0.7, 3.0.3)
rake (0.8.7)
thor (0.14.6)
treetop (1.4.9)
tzinfo (0.3.27)
web-app-theme (0.6.3)
will_paginate (3.0.pre2)
найдите mysql_config
/usr/local/mysql-5.5.9-osx10.6-x86_64/bin/mysql_config
/usr/local/mysql-5.5.9-osx10.6-x86_64/man/man1/mysql_config.1
пакет показывает mysql2
/usr/local/rvm/gems/ruby-1.9.2-p180/gems/mysql2-0.3.2
найдите libmysqlclient.16.dylib
/usr/local/mysql-5.5.9-osx10.6-x86_64/lib/libmysqlclient.16.dylib
Как я могу продолжить?
Комментарии:
1. Это настоящая проблема в большинстве операционных систем, поскольку для этого требуются собственные привязки. Я мечтаю о том дне, когда у нас будет чистая реализация драйвера на ruby :(. Я должен добавить, что я не смог создать gem с Mysql 5.5, но он работал с mysql 5.1. Я постараюсь вспомнить, что я сделал.
Ответ №1:
У меня проблема sam. То, что я сделал, делает;
gem install --version '0.2.7' mysql2
Затем в GemFile вашего Rails. Должно выглядеть примерно так.
gem 'mysql2', '0.2.7'
Затем повторите попытку. Надеюсь, это поможет.
Комментарии:
1. Это тоже должно сработать, только сейчас заметил это. Хотя мое (обновленное) решение с использованием
"~> 0.2"
немного лучше, потому что оно освобождает bundler для использования других версий исправления ошибок 0.2, если они доступны.2. Я думаю, вы имеете в виду «~> 0.2.7». OTOH, «~> 0.2» допускает что-либо меньшее, чем 1.0. Смотрите Ограничение на пессимистичную версию .
3. чувак, я потратил 3 часа, прежде чем нашел этот пост. Они должны очистить этот gem
Ответ №2:
Ваш stacktrace после шага 2 подсказал вам, что делать:
Пожалуйста, установите адаптер mysql2:
gem install activerecord-mysql2-adapter
Обновить
Кроме того, обновите Rails до версии 3.0.7 — в 3.0.3 есть ряд дыр в безопасности (и багов).
Обновить
Похоже, что сообщение об ошибке от Rails неверно, оно должно было гласить:
Пожалуйста, используйте версии 0.2.x, если вы планируете использовать его в Rails <= 3.1
Ie. для всего, что меньше 3.1, вам нужно привязать mysql2 к версии 0.2 и не разрешать ему использовать 0.3. Для этого измените строку mysql2 в вашем Gemfile на эту:
gem "mysql2", "~> 0.2"
Затем повторно запустите bundle install
Комментарии:
1. Уже сделал .. 🙂 Я потратил впустую весь свой день, чувак .. и вот, наконец, вы вернулись к 1.8.7 с rails 3.0.7
2. Кстати, возврат к версии 1.8.7, вероятно, просто означает, что вы вернулись к версии 0.2.x. Ie для mysql2. Я не думаю, что это проблема 1.9.2 v. 1.8.7 (потому что я могу воспроизвести здесь с 1.8.7)
3. Отлично работает на @ruby1.8.7 и mysql 0.3.2 и rails 3.0.7. Но, безусловно, ваша точка зрения верна. Но я не могу с этим возиться, поскольку нахожусь в середине очень важного проекта. Но обязательно попробую, как только все закончится.
Ответ №3:
доработка rails: эта версия mysql2 (0.3.2) больше не поставляется с адаптером ActiveRecord в комплекте, поскольку теперь она является частью Rails 3.1 ПРЕДУПРЕЖДЕНИЕ: Пожалуйста, используйте версии 0.2.x, если вы планируете использовать ее в Rails <= 3.0.x
Версия MySQL ‘0.2.7’ решила мою проблему.
gem 'mysql2', '0.2.7'
Ответ №4:
Попробуйте это (но я ничего не могу гарантировать)
- Проверьте этот пост о том, как
- удалите MySQL 5.5.
- установите MySQL 5.1 (я думаю, что я скачал 32-битную версию DMG)
- Следуйте этому сообщению, чтобы создать GEM.
Надеюсь, после этого все заработает. Я скрещу пальцы за вас.
Комментарии:
1. Я тоже использую RVM, эти инструкции должны сработать. Я говорю «должен», потому что я установил его на свой персональный компьютер, и я не на работе, поэтому я не могу проверить некоторые вещи (например, какую именно версию mysql я скачал, хотя я помню, что это была 5.1.X). Просто любопытство, как вы думаете, какая часть не работает с RVM?
2. @Augusto О нет… Он использует mysql. Я уже использую mysql2 для множества своих проектов. Все серверы работают под управлением msql2
3. Извините за это. Я проверю сегодня вечером, что, если бы я скомпилировал mysql2, следуя тем же инструкциям, поскольку параметры для сборки обоих gem довольно схожи.
Ответ №5:
Вышеупомянутая проблема возникает в настоящее время в Engineeryard App Cloud с Ruby 1.9.2 и Rails 3.0.3. Используя mysql 2.8.1 barfs b / c, EY устанавливает адаптер mysql2. Использование mysql2 0.3.2 barfs. Итак, я был серьезно озадачен. Подкрепляет ответ Ричарда Сутара. Это сработало.