Rails 3 Mysql Проблемы - PullRequest
       9

Rails 3 Mysql Проблемы

15 голосов
/ 28 июня 2010

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

неопределенный метод `init 'для Mysql: Class

Ответы [ 8 ]

16 голосов
/ 23 марта 2011

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

Новые приложения Rails по умолчанию используют гем mysql2.

7 голосов
/ 01 октября 2010

Я столкнулся с той же проблемой (RoR 3, OSX 10.6, mysql 2.8.1 гем).

Вы можете использовать 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, затем снова запустите rails.

3 голосов
/ 28 июня 2010

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

2 голосов
/ 29 сентября 2010

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

Больше информации на http://github.com/brianmario/mysql2

1 голос
/ 10 августа 2012

Я думаю, что происходит то, что gem mysql не может загрузить динамическую библиотеку 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 
1 голос
/ 11 февраля 2011

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

1 голос
/ 17 сентября 2010

Я думаю, что нашел решение проблемы.В моем случае проблема заключалась в том, что гем mysql не был правильно установлен с помощью бандлера.когда я сделал это:

bundle install mysql (ошибка noobish)

все гемы пошли в каталог mysql, но позже я проверил документы гема bundler и сделал это:

bundle install bundler_files (чтобы узнать, где будут находиться гемы в будущем)

все выглядело почти нормально, за исключением того, что когда устанавливался mysql gem, у меня возникали некоторые ошибки.Я заметил, что это из-за моего пути к папке "/ home / pawel / Aptana Studio Workspace / myrails_app"

Если у вас есть пробелы в пути к папке, этот драгоценный камень не будет установлен должным образом и позже, когда вы измените путь кодин без пробелов и попробуйте установить mysql gem, он не отобразит никаких ошибок, но установка будет повреждена, потому что у вас будут дополнительные папки с некоторыми файлами и т. д., так что

УДАЛИТЕ ПАПКУ GEMСОЗДАН BUNDLER И УСТАНОВИТЕ ДРАГОЦЕННЫЕ КАМНИ С ЭТОЙ КОМАНДОЙ:

комплектация

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

0 голосов
/ 13 июля 2011

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

undefined method `init' for Mysql:Class

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

Unable to compile native extensions

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

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

Теперь все в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...