2016-04-15 2 views
2

После того, как я выполнил bundle, я не могу использовать рельсы и грабли. Если я исполняю rails s или rake db:migrate или bundle exec rackup, у меня есть эта ошибка:Ошибка при загрузке «libmysqlclient.18» - gem mysql2

/Library/Ruby/Gems/2.0.0/gems/activesupport-4.2.1/lib/active_support/dependencies.rb:274:in `require': dlopen(/Library/Ruby/Gems/2.0.0/gems/mysql2-0.3.20/lib/mysql2/mysql2.bundle, 9): Library not loaded: /usr/local/lib/libmysqlclient.18.dylib (LoadError) 
Referenced from: /Library/Ruby/Gems/2.0.0/gems/mysql2-0.3.20/lib/mysql2/mysql2.bundle 
Reason: image not found - /Library/Ruby/Gems/2.0.0/gems/mysql2-0.3.20/lib/mysql2/mysql2.bundle 

К сожалению, не нарушать приведенный выше код (я не люблю этот свиток), но я не хочу, чтобы препятствовать пониманию проблемы ,

OS: Mac OS X Yosemite - 10.10.3 
Ruby -v: ruby 2.0.0p481 (2014-05-08 revision 45883) [universal.x86_64-darwin14] 
Rails -v: Rails 4.2.1 
Mysql2 version: mysql2 (0.4.3, 0.3.20, 0.3.18) 

Я попытался (разделенные команды в разных momments):

sudo gem update mysql2 
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib 

Дополнительная информация:

Команда:

otool -L /Library/Ruby/Gems/2.0.0/gems/mysql2-0.3.18/lib/mysql2/mysql2.bundle

возвращение

/Library/Ruby/Gems/2.0.0/gems/mysql2-0.3.18/lib/mysql2/mysql2.bundle: 
    /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/libruby.2.0.0.dylib (compatibility version 2.0.0, current version 2.0.0) 
    /usr/local/lib/libmysqlclient.18.dylib (compatibility version 18.0.0, current version 18.0.0) 
    /usr/lib/libssl.0.9.8.dylib (compatibility version 0.9.8, current version 0.9.8) 
    /usr/lib/libcrypto.0.9.8.dylib (compatibility version 0.9.8, current version 0.9.8) 
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1213.0.0) 
    /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0) 

PS: bundle работает отлично, без ошибок

Tks

+0

У вас есть база данных, созданная в mysql, которую вы используете в database.yml, и исправьте имя пользователя и пароль – uzaif

+0

Не идеальное решение, но я столкнулся с подобными ошибками с последними версиями gem mysql2. В моем случае я просто ограничил версию в 'Gemfile' с помощью:' 'mysql2 ',' ~> 0.3.18''. –

+0

Используют Ubuntu или Linux? –

ответ

4

[ SOLVED]

@SeanHuber предложил использовать mysql2 -v 0.3.18

Я удалил версию 0.3.20 mysql2:

sudo gem uninstall mysql2 -v 0.3.20 

После этого я установил версию 0.3.18:

sudo gem install mysql2 -v '0.3.18' 

И в моей Gemfile:

gem 'mysql2', '~> 0.3.18' 

После этого, пучковые работы. Мне нужно обновить некоторые драгоценные камни, как изобретать. Следствие, я обновил рубин до 2.2.3.

Теперь все работает.

Заключение: mysql2 -v 0.3.20 - это плохо.

Спасибо @SeanHuber, чтобы показать мне путь.

+1

Удивительный! Мы все равно должны понять, что касается новой версии, которая вызывает проблему, но я рад, что у вас есть обход на время. –

0

Выполните следующие шаги, вы упускаете некоторые необходимые библиотеки, необходимые для обеспечения соединения adpater базы данных:

sudo apt-get install libmysql-ruby libmysqlclient-dev 
sudo apt-get install libmysqlclient-dev 
gem uninstall mysql 
bundle install 
+0

Эй, спасибо за ваш ответ. Я не могу это сделать, потому что я использую Mac OS X, а не linux ... –

+0

Вы можете попробовать: https://github.com/brianmario/mysql2/tree/0.3.x –

Смежные вопросы