Ошибка MySQL Gem: MysqlCompat :: MysqlRes на Snow Leopard - PullRequest
0 голосов
/ 23 февраля 2011

Я пытаюсь заставить работать mysql gem ... и просто не хочет. Каждый раз, когда я делаю рейк db: migrate, я получаю

uninitialized constant MysqlCompat::MysqlRes

Я установил mysql с этого образа диска: mysql-5.5.9-osx10.6-x86_64.dmg

Я запустил установку gem с печально известным параметром archflags:

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

И версия ruby, которую я использую, является версией Snow Leopard по умолчанию:

[~/sites/testdb]$ file `which mysql`
/usr/local/mysql/bin/mysql: Mach-O 64-bit executable x86_64
[~/sites/testdb]$ file `which ruby`
/usr/bin/ruby: Mach-O universal binary with 3 architectures
/usr/bin/ruby (for architecture x86_64):    Mach-O 64-bit executable x86_64
/usr/bin/ruby (for architecture i386):  Mach-O executable i386
/usr/bin/ruby (for architecture ppc7400):   Mach-O executable ppc

Мой файл database.yml довольно прост:

development:
  adapter: mysql
  host: 127.0.0.1
  database: testdb
  username: root
  password: 

Любая помощь будет оценена.

Ответы [ 4 ]

1 голос
/ 07 марта 2011

Вы можете легко решить вашу проблему.

Если вы не используете rvm:

sudo install_name_tool -change libmysqlclient.16.dylib /usr/local/mysql/lib/libmysqlclient.16.dylib /Library/Ruby/Gems/1.8/gems/mysql-2.8.1/lib/mysql_api.bundleruby

Если вы используете rvm:

install_name_tool -change libmysqlclient.16.dylib usr/local/mysql/lib/libmysqlclient.16.dylib [YOUR_GEMSET_PATH]/gems/mysql-2.8.1/lib/mysql_api.bundle
1 голос
/ 07 марта 2011

Я писал об этом на прошлой неделе: MySQL 5.5 в Mac OS X .

Мое альтернативное решение использования install_name_tool - установить DYLD_LIBRARY_PATH в файлах запуска вашей оболочки. Преимущество в том, что вы делаете это один раз, тогда как, если вы используете install_name_tool, вы будете повторять это каждый раз, чтобы переустановить или обновить гем.

Драгоценный камень mysql2 будет иметь ту же проблему с немного другим сообщением об ошибке. Проблема в том, как создается библиотека libmysqlclient. Он не содержит полного пути, поэтому все, что с ним связано, не может найти его во время выполнения.

0 голосов
/ 17 августа 2011

Я столкнулся с той же ошибкой.На моей машине, однако, mysql gen был создан, когда на моей машине все еще был mysql 5.1.Теперь, после обновления до MySQL 5.5, dyld-файл, на который ссылается исходная сборка /usr/local/mysql/lib/libmysqlclient.16.dylib, больше не существует и был заменен файлом /usr/local/mysql/lib/libmysqlclient.18.dylib.

Полная перестройка исправленных вещей в MySQL Gemт.е.

gem uninstall mysql
gem install mysql
0 голосов
/ 23 февраля 2011

Вы можете попробовать использовать драгоценный камень mysql2, который не страдает от тех же проблем.

Я обнаружил, что зачастую гораздо лучше использовать ruby и mysql из MacPorts или brew , чтобы хранить все на одной странице и не связываться с системой Ruby.

OS X поставляется с версией MySQL, которая может не совпадать с установленной вамиили, возможно, установщик gem не знает, какую конфигурационную программу использовать.Убедитесь, что mysql_config возвращает правильный путь.

...