Ответ 1
Измените свой Gemfile на использование "mysql2", это более современный драйвер и имеет более приятные функции, о чем говорили другие люди.
В приложениях New Rails по умолчанию используется камень mysql2.
Попытка запустить новое приложение Rails 3 beta 4 с помощью mysql.... Запуск OS X Snow Leopard. С предыдущими версиями Rails у меня нет проблем с MySQL. Но теперь, когда я запускаю приложение Rails 3, я получаю следующую ошибку, когда я нажимаю "О вашей прикладной среде" на экране запуска Rails index.html:
undefined метод `init 'для Mysql: Class
Измените свой Gemfile на использование "mysql2", это более современный драйвер и имеет более приятные функции, о чем говорили другие люди.
В приложениях New Rails по умолчанию используется камень mysql2.
Я столкнулся с той же проблемой (RoR 3, OSX 10.6, mysql 2.8.1 gem).
Вы можете использовать irb, чтобы исключить RoR:
irb
require 'rubygems'
require 'mysql'
db = Mysql.connect('hostname', 'username', 'password', 'database')
Если вышеуказанное не работает, вы можете попытаться удалить драгоценный камень mysql и переустановить его. Я наткнулся на сообщение, в котором bundle install
может испортить установку без отображения ошибок.
sudo gem uninstall mysql
sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
Проверьте работу с помощью irb
, затем снова запустите рельсы.
Я закончил переключение с драгоценного камня mysql на драгоценный камень ruby-mysql, работал.
Для простого использования, которое является типичным (подключение, запрос, итерация по результатам), я нашел mysql2 gem, который намного быстрее, чем драгоценные камни mysql или ruby-mysql, и значения auto-casts для правильных типов. И он прекрасно устанавливается на Snow Leopard, в то время как я не мог заставить gsm mysql работать.
Дополнительная информация на http://github.com/brianmario/mysql2
Я думаю, что нашел решение проблемы. В моем случае проблема заключалась в том, что gem mysql не был установлен надлежащим образом с помощью bundler. когда я это сделал:
bundle install mysql (ошибка noobish)
все драгоценные камни перешли в каталог mysql, но позже я проверил документы о драгоценности и сделал это:
bundle install bundler_files (чтобы узнать, где находятся драгоценные камни в будущем)
все выглядело почти нормально, за исключением того, что при установке mysql gem у меня появились некоторые ошибки. Я заметил, что это из-за моего пути к папке "/home/pawel/Aptana Studio Workspace/myrails_app"
Если у вас есть пробелы в пути к папке, этот жемчуг не будет правильно установлен, а позже, когда вы измените путь к одному без пробелов и попробуете установить драгоценный камень mysql IT WONT DISPLAY ЛЮБЫЕ ОШИБКИ, но установка будет повреждена, потому что вы там будут некоторые дополнительные папки с некоторыми файлами и т.д., поэтому
УДАЛИТЬ ПАМЯТЬ GEM, СОЗДАВАЕМЫЙ BUNDLER И ПЕРЕЗАГРУЗИТЬ ГЕМОЛЫ ЭТОЙ КОМАНДЕЙ:
установить пакет
Это решило проблему.
вы можете попробовать переключиться на драгоценный камень mysql2, который должен решить все эти проблемы для вас. см. https://github.com/brianmario/mysql2/
Я думаю, что происходит то, что mysql gem не может загружать динамическую библиотеку mysql (которая должна быть предоставлена встроенной установкой MySQL). Чтобы проверить, происходит ли это, сделайте это
$ irb
1.9.2p320 :001 > require 'mysql_api'
=> true
1.9.2p320 :002 >
Если он не может загрузить этот низкий уровень mysql_api
(который фактически обеспечивает функциональность для драгоценного камня mysql
), он даст вам потенциально полезные ошибки. Обычно он не может найти динамическую библиотеку. Чтобы исправить это, я нашел пару решений:
Из http://wonko.com/post/how-to-install-the-mysqlruby-gem-on-mac-os-x-leopard, сделайте это
Для общесистемной установки
sudo env ARCHFLAGS="-arch i386" gem install mysql -- \
--with-mysql-dir=/usr/local/mysql --with-mysql-lib=/usr/local/mysql/lib \
--with-mysql-include=/usr/local/mysql/include
или локальная установка
env ARCHFLAGS="-arch i386" gem install mysql -- \
--with-mysql-dir=/usr/local/mysql --with-mysql-lib=/usr/local/mysql/lib \
--with-mysql-include=/usr/local/mysql/include
а затем из http://alexbraunstein.com/2011/08/12/library-loaded-libmysqlclient-18-dylib/ введите .bash_profile
:
export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH
У меня такая же проблема после обновления до Snow Leopard. При установке MySQL-gem я получил кучу ошибок в документации, а затем при запуске сервера:
undefined method `init' for Mysql:Class
У меня также были некоторые похожие, но несвязанные проблемы с другими драгоценными камнями, особенно те из них, у которых были компоненты C, которые нуждались в компиляции, такие как RedCloth и hpricot:
Unable to compile native extensions
Эти ошибки связаны с собственными расширениями в архитектуре base 64. Решение было трехкратным:
Теперь все хорошо.