Подтвердить что ты не робот

Неинициализированная константа MysqlCompat:: MysqlRes (с использованием mms2r gem)

переместил мое приложение rails на новый сервер и пришлось установить несколько зависимостей от gem. Однако после установки mysql gem я получаю ошибку, неинициализированную константу MysqlCompat:: MysqlRes, всякий раз, когда я пытаюсь запустить команду rake, которая включает в себя базу данных mysql. Кажется, я получаю эту ошибку только тогда, когда мне нужен камень mms2r. Кто-нибудь слышал об этом? Я запускаю mysql 2.8.1 gem.

4b9b3361

Ответ 1

на моей Mac OS X 10.6 Я сделал это, чтобы установить 2.8.1 драгоценный камень, который отлично работал с моим mysql5-сервером MacPorts:

sudo env ARCHFLAGS="-arch x86_64" gem install mysql

Ответ 2

В основном проблема заключается в том, что динамическая библиотека libmysqlclient не может быть найдена. Вышеупомянутые решения будут работать, но вам нужно повторно применить их при каждом восстановлении драгоценного камня или при установке новой версии MySQL.

Альтернативный подход заключается в том, чтобы добавить каталог MySQL, содержащий библиотеку, в динамический путь загрузки. Если в файле .bashrc было задано следующее:

export DYLD_LIBRARY_PATH="/usr/local/mysql/lib:$DYLD_LIBRARY_PATH"

Ответ 3

Моя проблема была связана с тем, что мой "mysql" был 32-разрядной установкой, в то время как ruby ​​был 64 и 32-битным. Проверьте с помощью этих команд

 file `which mysql` 
 file `which ruby`

Оба должны совпадать с 64-битным исполняемым исполняемым файлом x86_64 Mach-O или 64-битным исполняемым файлом i386 от Mach-O. Я установил 64-битный mysql, затем

export ARCHFLAGS="-arch x86_64" ; sudo gem install --no-rdoc --no-ri mysql -v 2.7 -- --with-mysql-dir=/usr/local --with-mysql-config=/usr/local/mysql/bin/mysql_config

и вуаля!

Ответ 4

Если у вас есть mysql 5.5, выполните следующие действия: http://geryit.com/blog/2011/01/installing-mysql-with-rails-on-mac-os-x-snow-leopard/

FTR: Если бы мне не понадобился какой-то глупый rep для продвижения, я бы поддержал идентификационный ответ, рассмотрите это мое upvote.

Ответ 5

Да, я видел подобное сообщение об ошибке, ища тот же несуществующий класс MysqlCompat:: MysqlRes

Как оказалось, этот класс не должен существовать; сообщение об ошибке вызвано проблемой с последним драйвером Mysql. mysql-2.8.1 искал мои библиотеки в каталоге с дополнительным уровнем "mysql" в конце. Например, мои библиотеки (в MacOS X 10.5.8) находятся в /usr/local/mysql/lib, но библиотека mysql.bundle ищет библиотеки MySQL в /usr/local/mysql/lib/mysql... что неверно.

Мне было достаточно легко исправить, создав символическую ссылку в /usr/local/mysql/lib с именем 'mysql', которая указывает на..

Поэтому, когда библиотеки ссылаются на эту дополнительную глубину, они обнаруживаются и работают. Это, безусловно, взлом; Я уверен, что есть более подходящие способы исправить это. Мне просто нужно, чтобы он работал, чтобы я мог заниматься другими вещами.

Кроме того, это может не сработать для вас. Вероятно, это сработает, если ваша ошибка выглядит следующим образом:

  ./mysql.bundle: dlopen(./mysql.bundle, 9): Library not loaded: /usr/local/mysql/lib/mysql/libmysqlclient.15.dylib (LoadError)
  Referenced from: /Users/ccullen/Projects/npapp-v2/mysql-ruby-2.8.1/mysql.bundle
  Reason: image not found - ./mysql.bundle
    from test.rb:5

Поскольку это, кажется, недавнее развитие, и я не видел прямого ответа на него, я думал, что поделюсь тем, как я его исправил. Удачи:)

Ответ 6

gem install -v = 2.7.1 также исправит его.

Ответ 8

Эта проблема появилась со мной после обновления Ubuntu с 9.10 по 10.04.

Кажется, проблема с камнем mysql.

Симптомы: любое использование ActiveRecord, требующее подключения к mysql, дает трассировку стека из "неинициализированной константы MysqlCompat:: MysqlRes"

Я попробовал "gem update mysql" и обнаружил, что я не могу создавать собственные расширения, потому что компилятор не может найти библиотеку mysql_client. Эта библиотека (libmysqlclient.so.16) находится в /usr/lib.

Исправление для ubuntu 10.04:

Как root, я сделал следующее:

apt-get install libmysqlclient-dev
gem install mysql

Я замечаю, что здесь есть несколько разных людей, и мне интересно, не нашли ли мы основную причину.

Переменные, которые люди должны уточнять в своих ответах:

  • версия операционной системы - какая версия того, что вы используете?
  • где и как вы установили mysql? - люди здесь, похоже, установили свой mysql из источника в /usr/local (я установил мой через систему упаковки ubuntu)
  • вы на 64-битной ubuntu или 32bit? (сейчас я на 32-разрядной версии.)

Ответ 9

С mysql gem (2.8.1) я получал

неинициализированная постоянная MysqlCompat:: MysqlRes

Используя -v 2.7, он отлично работает и для тех, кто использовал Homebrew для установки mysql

sudo gem install mysql -v 2.7 - --with-MySQL-конфигурационный =/USR/локальные/Подвал/MySQL/5.1.48/бен/mysql_config

Обратите внимание, что при необходимости вы можете изменить версию mysql.

Ответ 10

sudo gem install mysql -v 2.7 должен сделать трюк...

Ответ 11

sudo gem install mysql -v 2.7 - --with-mysql-config =/usr/local/mysql/bin/mysql_config также помогло, когда перешел на новый ноутбук Snow Leopard. Я не использовал MacPorts для установки mysql, а скорее из двоичного кода, и не имел никакого успеха с решениями флагов или символическими ссылками.

Ответ 12

gem uninstall mysql

gem install mysql -v 2.7 -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

ldconfig /usr/local/mysql/lib/mysql

RAILS_ENV=production rake db:migrate --trace

Это сработало для меня.

Ответ 13

sudo apt-get install libmysqlclient15-dev

Ответ 14

Я попробовал все остальное здесь, но все еще получил проблему. Переход от MySQL 5.5 до 5.1 исправил его для меня. (Mac OS X 10.6.5)

Ответ 15

Понижение (с 5.9) до mysql 5.1 помогло на 10.6... запустить как mysql, так и mysql2.

Ответ 16

Драки mysql и mysql2 работают на ruby ​​1.9.2, просто обновляют ruby ​​и устанавливают необходимый вам камень.

Ответ 17

Я пробовал все вышеперечисленное, и никто из них не работает для меня. При попытке установить mysql версии 2.7 я получаю сообщение об ошибке:

sudo gem install -v=2.7.1 mysql -- --with-mysql-dir=/usr/local/mysql-5.1.39-osx10.5-powerpc/bin/mysql_config
ERROR:  could not find gem mysql locally or in a repository
F107PHD:stepgreen.org tdillahu$ sudo gem install -v=2.7 mysql -- --with-mysql-dir=/usr/local/mysql-5.1.39-osx10.5-powerpc/bin/mysql_config
Building native extensions.  This could take a while...
ERROR:  Error installing mysql:
    ERROR: Failed to build gem native extension.

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb --with-mysql-dir=/usr/local/mysql-5.1.39-osx10.5-powerpc/bin/mysql_config
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lm... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lz... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lsocket... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lnsl... no
checking for mysql_query() in -lmysqlclient... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
    --with-opt-dir
    --without-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
    --with-mysql-config
    --without-mysql-config
    --with-mysql-dir
    --with-mysql-include
    --without-mysql-include=${mysql-dir}/include
    --with-mysql-lib
    --without-mysql-lib=${mysql-dir}/lib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-mlib
    --without-mlib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-zlib
    --without-zlib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-socketlib
    --without-socketlib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-nsllib
    --without-nsllib
    --with-mysqlclientlib
    --without-mysqlclientlib


Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/mysql-2.7 for inspection.
Results logged to /Library/Ruby/Gems/1.8/gems/mysql-2.7/gem_make.out

Моя первоначальная ошибка: ake прерван! неинициализированная константа MysqlCompat:: MysqlRes/vendor/rails/activesupport/lib/active_support/dependencies.rb:440:in load_missing_constant' /vendor/rails/activesupport/lib/active_support/dependencies.rb:80:in const_missing '

Ответ 18

У меня была такая же проблема после обновления с Fedora 10 до Fedora 12. Я исправил ее, просто удалив gem mysql и установив его снова. Таким образом, он соответствует новой версии MySQL.

Ответ 19

sudo gem install mysql -v 2.7 - --with-mysql-config =/usr/local/mysql/bin/mysql_config

Отлично работает для меня:)

Ответ 20

sudo gem install mysql -v 2.7 -- --with-mysql-config=/usr/local/mysql/bin/mysql_config 

также работал у меня, когда флаг и символические ссылки не были! СПАСИБО!!

Ответ 21

sudo env ARCHFLAGS="-arch x86_64" gem install mysql

Пакет Dmg с сайта mysql и ddone!

Ответ 22

В Mac OS X 10.6.4 мне пришлось указать каталог архитектуры и конфигурации:

sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

Ответ 24

Это то, что сработало для меня. Я прочитал тонну сообщений и обнаружил, что использование системы ruby ​​install вызывает проблему несовместимости:

  • Не используйте стандартную рубиновую установку! установить ruby ​​с помощью macports
  • не используйте установку rubygems по умолчанию! установить rb-rubygems с помощью macports
  • использовать mysql 5.1 (не 5.5) - установить из mysql.com mac.dmg 4.

sudo env ARCHFLAGS = "- arch x86_64" gem установить mysql - --with-MySQL-конфигурационный =/USR/локальные/MySQL/бен/mysql_config