Проблема установки гема mysql на Snow Leopard: неинициализированная константа MysqlCompat :: MysqlRes - PullRequest
16 голосов
/ 22 декабря 2009

У меня проблема при попытке установить драйвер Ruby mysql gem.

Я недавно обновился до Snow Leopard и выполнил ручную установку MySQL с помощью Hivelogic. Кажется, все это работает нормально, так как я могу получить доступ к mysql из командной строки и внести изменения в базу данных.

Моя проблема в том, что если я сейчас использую

rake db:migrate 

Я получаю:

rake aborted!
uninitialized constant MysqlCompat::MysqlRes

(See full trace by running task with --trace)

Теперь кажется, что мой самоцвет mysql не работает должным образом, поскольку я могу нормально обращаться к MySQL из Python, используя драйвер Python (который я скомпилировал). Поэтому я попытался восстановить драгоценный камень, используя следующую команду с этого сайта: http://techliberty.blogspot.com/, (кстати, я использую последний Intel MacBook Pro):

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

Это компилируется, хотя я не получаю определения для документации:

  Building native extensions.  This could take a while...
  Successfully installed mysql-2.8.1
  1 gem installed
  Installing ri documentation for mysql-2.8.1...

  No definition for next_result

  No definition for field_name
  ...

Я немного озадачен, так как мой mysql_config находится в правильном месте:

 /usr/local/mysql/bin/mysql_config

И я удалил все другие экземпляры самоцвета mysql из моей системы.

Любые предложения будут с благодарностью. Большое спасибо.

PS Я видел этот предыдущий пост неинициализированная константа MysqlCompat :: MysqlRes (с использованием гема mms2r) , но она не применима для моей версии.

Ответы [ 17 ]

0 голосов
/ 29 ноября 2010

Очень быстрое решение для меня.

Эта проблема снова возникла у меня на этой неделе на машине для разработки, которой я некоторое время не пользовался. Согласно шагу 2 первоначального ответа emson, требуется только перекомпиляция гем MySQL с правильными ARCHFLAGS:

sudo env ARCHFLAGS="-arch x86_64" gem install --no-rdoc --no-ri mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
0 голосов
/ 19 апреля 2011

У меня была такая же проблема. Я установил mysql (в моем случае, 5.1.48 64-bit для Snow Leopard) в / usr / local / mysql / current /, а не в / usr / local / mysql. Тем не менее, в библиотеке клиентского сегмента mysql (libmysqlclient.16.dylib) есть путь /usr/local/mysql/lib/libmysqlclient.16.dylib.

После нескольких неудачных попыток исправить это, используя install_name_tool, нужно было как изменить путь в разделяемой библиотеке следующим образом, а затем пересобрать mysql 2.8.1 rubygem, указав оба my:

# change the path embedded in libmysqlclient.dylib
sudo install_name_tool -change /usr/local/mysql/lib/libmysqlclient.16.dylib  /usr/local/mysql/current/lib/libmysqlclient.16.dylib /usr/local/mysql/current/lib/libmysqlclient.16.dylib

# reinstall the mysql gem
sudo ARCHFLAGS="-arch i386 -arch x86_64" gem install --no-rdoc --no-ri mysql -- --with-mysql-dir=/usr/local/mysql/current --with-mysql-config=/usr/local/mysql/current/bin/mysql_config

Обратите внимание, что это связано с тем, что mysql установлен в / usr / local / mysql / current, вам нужно отредактировать пути в соответствии с вашей системой.

0 голосов
/ 02 марта 2010

Я довольно усердно работал, чтобы решить эту проблему за последний день, и я наконец понял это. Я бегу снежный барс и сделал свежие рельсы и MySQL установить. Единственный способ заставить это работать - установить 64-битную версию mysql из dmg (не macports) и перезагрузить компьютер в 64-битном режиме, удерживая клавиши «6» и «4» во время загрузки. Затем я установил гем, установил хост моей БД на локальный, и он работал как чемпион.

0 голосов
/ 20 мая 2010

Несколько проблем были связаны с устаревшими или множественными конфликтующими двоичными файлами рубинов и драгоценных камней. У меня сама была проблема с «прозрачной» компиляцией гема mysql с помощью системного ruby, при попытке запустить мой код с ruby ​​1.9. После выяснения проблемы благодаря этой теме все прошло гладко.

Чтобы избежать этих проблем и для записей, инструментарий RVM может быть очень удобен: http://rvm.beginrescueend.com. Он помогает правильно управлять несколькими версиями ruby, и он умно управляет гемами для всех версий без сохранения копии для каждой версии. .

Кажется, что использование RVM может помочь избежать некоторых проблем в этой теме.

0 голосов
/ 21 декабря 2010

После долгого поиска решения этой конкретной проблемы и безуспешной проверки всех вышеперечисленных опций (и опций на многих других сайтах) я удалил установку mysql-5.5 и установил mysql-5.1. Внезапно, и с помощью небольшой части вышеупомянутой помощи для компиляции 64-битных версий, мне наконец-то удалось установить работающий mysql gem.

Итак, если вы столкнулись с этой проблемой и запускаете mysql 5.5, попробуйте перейти на версию mysql 5.1.

0 голосов
/ 30 ноября 2010

У меня была эта или, по крайней мере, похожая проблема (Hivelogic не участвовал, и это было не обновление, а скорее новая система). Я согласен, что это, вероятно, 64-битная проблема. У меня есть для вас ссылка, что после всех других царапин на голове и заднице, в конце концов, я спас свою задницу (и мозг).

[http://forums.mysql.com/read.php?116,359591,359591]

Удачи, пройдя эту конфигурацию BS и перейдя к некоторому кодированию.

0 голосов
/ 18 ноября 2010

В случае, если кто-то использует rvm с ruby ​​1.8.7 и mysql x86 (32-битная версия) и имеют эту проблему. Вы найдете эту ссылку полезной: http://rvm.beginrescueend.com/integration/databases/. Вам нужно будет установить mysql в версии x86_64, а затем установить гем mysql с установленными значениями archflags x86_64. Причина в том, что даже вы пытаетесь установить гем как x86, чтобы соответствовать вашему mysql x86. Однако версия ruby ​​находится в 64 битах. Так что вам действительно нужно иметь все три соответствия: Ruby, mysql и mysql gem. Так что проще всего иметь их все в 64 битах.

...