Проблемы с Rails 3 Mysql

Попытка запустить новое приложение Rails 3 beta 4 с помощью mysql.... Запуск OS X Snow Leopard. С предыдущими версиями Rails у меня нет проблем с MySQL. Но теперь, когда я запускаю приложение Rails 3, я получаю следующую ошибку, когда я нажимаю "О вашей прикладной среде" на экране запуска Rails index.html:

undefined метод `init 'для Mysql: Class

Ответы

Ответ 1

Измените свой Gemfile на использование "mysql2", это более современный драйвер и имеет более приятные функции, о чем говорили другие люди.

В приложениях New Rails по умолчанию используется камень mysql2.

Ответ 2

Я столкнулся с той же проблемой (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, затем снова запустите рельсы.

Ответ 3

Я закончил переключение с драгоценного камня mysql на драгоценный камень ruby-mysql, работал.

Ответ 4

Для простого использования, которое является типичным (подключение, запрос, итерация по результатам), я нашел mysql2 gem, который намного быстрее, чем драгоценные камни mysql или ruby-mysql, и значения auto-casts для правильных типов. И он прекрасно устанавливается на Snow Leopard, в то время как я не мог заставить gsm mysql работать.

Дополнительная информация на http://github.com/brianmario/mysql2

Ответ 5

Я думаю, что нашел решение проблемы. В моем случае проблема заключалась в том, что 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 И ПЕРЕЗАГРУЗИТЬ ГЕМОЛЫ ЭТОЙ КОМАНДЕЙ:

установить пакет

Это решило проблему.

Ответ 6

вы можете попробовать переключиться на драгоценный камень mysql2, который должен решить все эти проблемы для вас. см. https://github.com/brianmario/mysql2/

Ответ 7

Я думаю, что происходит то, что 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 

Ответ 8

У меня такая же проблема после обновления до Snow Leopard. При установке MySQL-gem я получил кучу ошибок в документации, а затем при запуске сервера:

undefined method `init' for Mysql:Class

У меня также были некоторые похожие, но несвязанные проблемы с другими драгоценными камнями, особенно те из них, у которых были компоненты C, которые нуждались в компиляции, такие как RedCloth и hpricot:

Unable to compile native extensions

Эти ошибки связаны с собственными расширениями в архитектуре base 64. Решение было трехкратным:

  • Я переустановил XCode 4. Обновление до Snow Leopard сломало мой компилятор C, поэтому некоторые камни не смогли скомпилировать. Это приблизило меня, но не решило проблему.
  • Я сдул и переустановил RVM. Кажется, он установил драгоценные камни в один каталог и нашел их в другом. Это фиксировало каждую ошибку базовой архитектуры base64, но в MySQL-камне все еще не удалось.
  • Я удалил и понизил MySQL до версии 5.1. Это исправило проблему с выпуском MySQL.

Теперь все хорошо.