Проблема установки гема 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 ]

18 голосов
/ 17 марта 2011

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

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

export DYLD_LIBRARY_PATH="/usr/local/mysql/lib:$DYLD_LIBRARY_PATH"
10 голосов
/ 17 апреля 2011

После борьбы с этой проблемой в течение нескольких дней я, наконец, получил ее. 2 вещи, которые я сделал, чтобы это работало:

  1. sudo env ARCHFLAGS = "- arch x86_64" установка gem --no-rdoc --no-ri mysql - --with-mysql-config = / usr / local / mysql / bin / mysql_config
  2. export DYLD_LIBRARY_PATH = "/ usr / local / mysql / lib: $ DYLD_LIBRARY_PATH"

Я немного удивлен, что № 2 упоминал только Стивен Чанин.

Я на Snow Leopard, и у меня установлен только 1 MySQL (x86_64) 5.5 и 1 ruby ​​(предварительно упакованный с Snow Leopard).

10 голосов
/ 14 февраля 2010

ОК, я наконец-то решил эту проблему.

Причина, по которой это происходило, заключалась в том, что у меня были установлены две версии Ruby.

  1. Я скомпилировал и установил свою собственную версию Ruby, следуя рекомендациям HiveLogic, до моей установки Snow Leopard.
  2. Затем я обновился до Snow Leopard (который имеет свою собственную версию Ruby)

Эти две версии противоречили друг другу и означали, что когда я пытался установить гем MySQL с правильными ARCHFLAGS, система думала, что я использую другую версию Ruby.

Исправление было достаточно простым:

  1. Удалить версию Ruby HiveLogic (http://pivotallabs.com/users/chad/blog/articles/407-removing-old-ruby-source-installation-after-a-leopard-upgrade)
  2. Перекомпилируйте гем MySQL с правильными ARCHFLAGS:

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

Как только я это сделал, все работало нормально. Надеюсь, у вас это получится.

B

6 голосов
/ 20 апреля 2010

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

file `which mysql`
file `which ruby`

Оба должны соответствовать 64-битному исполняемому файлу Mach-O x86_64 или 64-битному исполняемому файлу Mach-O i386. Я установил 32-битный mysql, переустановил ruby ​​из исходного кода и rails, и с тех пор все работает безупречно. Между прочим, я на Леопарде.

2 голосов
/ 19 января 2010

Та же проблема и здесь; боролся с этим больше двух недель!

Я не эксперт по ROR, но из других, более знающих людей, которые нашли решение, проблема, похоже, указывает на Ruby Gem для mysql, который, по-видимому, неправильно устанавливается на Mac.

Я продолжу расследование на сайте Ruby Forge и посмотрю, сможет ли какой-нибудь гуру из Ruby Gem исправить эту ужасную ошибку ... Мне нужно, чтобы мои Rails работали! Время - деньги!

Итак, я сообщил об этой ошибке на странице отслеживания ошибок разработчиков RubyForge Mysql .

Я действительно надеюсь, что они могут помочь, поскольку это наносит ущерб моему текущему проекту.

И если кто-то еще сможет поддержать мой отчет об ошибке, возможно, он привлечет больше внимания; Пожалуйста, звоните!

2 голосов
/ 22 декабря 2009

Я применил инструкции hivelogic post , но с версией 5.1.41 MySQL. И для установки драгоценного камня я сделал 2 вещи:

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

И у меня все отлично получилось.

1 голос
/ 04 мая 2010

После того, как я решил эту проблему, я также обнаружил, что проблема связана с несколькими установленными двоичными файлами одной и той же версии mysql gem. Следующее исправило это для меня.

gem uninstall mysql
Select gem to uninstall:
 1. mysql-2.8.1
 2. mysql-2.8.1
 3. All versions
> 3

Successfully uninstalled mysql-2.8.1
Successfully uninstalled mysql-2.8.1

Затем я перекомпилировал самоцвет mysql из исходных текстов на своей машине со Snow Leopard, и весь мир был переполнен.

sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql-5.1.46-osx10.6-x86_64/bin/mysql_config
1 голос
/ 29 июля 2011

Есть вероятность, что вы следовали приведенным выше инструкциям, но забыли убить сервер перед переустановкой Mysql. Это не заставит сообщение об ошибке исчезнуть. Это случилось со мной.

Попробовав все варианты здесь, я попробовал следующее:

ps aux | grep 'mysql'

kill [pid_number_for_mysql]

В основном, убить сервер .. трудный путь. Затем перезапустите сервер.

1 голос
/ 19 января 2011

Если вы используете MySQL 5.5, вот шаги, которые заставили его работать у нас:

Команда для установки mysql-2.8.1:

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

Команда заставить mysql-2.8.1 работать с mysql 5.5:

sudo ln -s ../mysql/lib/libmysqlclient.16.dylib libmysqlclient.16.dylib

Надеюсь, это поможет!

1 голос
/ 18 января 2011

Это может быть проблемой версии Mysql. Вы должны установить наиболее стабильную версию (MYSQL 5.1). Смотрите мой блог: http://geryit.com/blog/2011/01/installing-mysql-with-rails-on-mac-os-x-snow-leopard/

...