Rails 3: MySQL2 gem «Библиотека не загружена»

#mysql #ruby-on-rails-3

#mysql #ruby-on-rails-3

Вопрос:

Дерек-MacBook-Pro: пример дерек $ rails g
/Library/Ruby/Gems/1.8/gems/mysql2-0.3.7/lib/mysql2/mysql2.bundle: dlopen(/Library/Ruby/Gems/1.8/gems/mysql2-0.3.7/lib/mysql2/mysql2.bundle, 9): Библиотека не загружена: libmysqlclient.18.dylib (ошибка загрузки)
 Ссылка из: /Library/Ruby/Gems/1.8/gems/mysql2-0.3.7/lib/mysql2/mysql2.bundle
 Причина: изображение не найдено - /Library/Ruby/Gems/1.8/gems/mysql2-0.3.7/lib/mysql2/mysql2.bundle
из /Library/Ruby/Gems/1.8/gems/mysql2-0.3.7/lib/mysql2.rb:9
из /Library/Ruby/Gems/1.8/gems/bundler-1.0.11/lib/bundler/runtime.rb:68: в `require'
из /Library/Ruby/Gems/1.8/gems/bundler-1.0.11/lib/bundler/runtime.rb:68: в `require'
из /Library/Ruby/Gems/1.8/gems/bundler-1.0.11/lib/bundler/runtime.rb:66: в `каждом"
из /Library/Ruby/Gems/1.8/gems/bundler-1.0.11/lib/bundler/runtime.rb:66: в `требовать"
из /Library/Ruby/Gems/1.8/gems/bundler-1.0.11/lib/bundler/runtime.rb:55: в `каждом"
из /Library/Ruby/Gems/1.8/gems/bundler-1.0.11/lib/bundler/runtime.rb:55: в `требовать"
из /Library/Ruby/Gems/1.8/gems/bundler-1.0.11/lib/bundler.rb:120: в `требовать"
от /Users/derek/example/config/application.rb:7
 из /Library/Ruby/Gems/1.8/gems/railties-3.0.10/lib/rails/commands.rb:15: в "требовать"
из /Library/Ruby/Gems/1.8/gems/railties-3.0.10/lib/rails/commands.rb:15
из script/rails:6: в `require'
из script / rails: 6

У меня установлен и запущен MySQL в OS X Lion. У меня установлен драгоценный камень. Он появляется в списке драгоценных камней (версия 0.3.7). Что не так?

Редактировать:

Здесь я добавлю свой файл database.yml. В нем говорится, что адаптер является mysql2 в каждом типе среды. Может быть, это поможет:

 # MySQL.  Versions 4.1 and 5.0 are recommended.
#
# Install the MySQL driver:
#   gem install mysql2
#
# And be sure to use new-style password hashing:
#   http://dev.mysql.com/doc/refman/5.0/en/old-client.html
development:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: example_development
  pool: 5
  username: root
  password:
  host: localhost

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: example_test
  pool: 5
  username: root
  password:
  host: localhost

production:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: example_production
  pool: 5
  username: root
  password:
  host: localhost
 

Ответ №1:

  • Убедитесь, что ‘mysql2’ — это адаптер БД, указанный в вашем database.yml
  • Убедитесь, что ‘mysql2’ — это драгоценный камень, указанный в вашем Gemfile

Я помню, что ошибка для одной из этих двух отсутствующих вещей действительно неинтуитивна и звучит так, как будто она описывает другую … так что просто убедитесь, что оба верны 🙂

Комментарии:

1. Блин, я только что заметил / понял, что отсутствующая библиотека — это не драгоценный камень, а библиотека mysql. На какой платформе вы работаете?