Подтвердить что ты не робот

Rails, MySQL и Snow Leopard

Я обновился до Snow Leopard, используя диск, который мы получили в WWDC.

Попытка запустить некоторые из моих рельсовых приложений теперь жалуется на sql

    (in /Users/coneybeare/Projects/Ambiance/ambiance-server)
!!! The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql.
Importing all sounds in /Users/coneybeare/Projects/Ambiance/ambiance-sounds/Import 32/Compressed/

 -- AdirondackPeepers.caf
!!! The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql.
rake aborted!
dlopen(/opt/local/lib/ruby/gems/1.8/gems/mysql-2.7/lib/mysql.bundle, 9): Library not loaded: /usr/local/mysql/lib/libmysqlclient.16.dylib
  Referenced from: /opt/local/lib/ruby/gems/1.8/gems/mysql-2.7/lib/mysql.bundle
  Reason: image not found - /opt/local/lib/ruby/gems/1.8/gems/mysql-2.7/lib/mysql.bundle

(See full trace by running task with --trace)

Я мог бы поклясться, что я это исправил раньше. Проблема в том, что

sudo gem install mysql

не работает и дает ошибку:

 Building native extensions.  This could take a while...
ERROR:  Error installing mysql:
    ERROR: Failed to build gem native extension.

/opt/local/bin/ruby extconf.rb install mysql
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lm... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lz... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lsocket... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lnsl... no
checking for mysql_query() in -lmysqlclient... no


Gem files will remain installed in /opt/local/lib/ruby/gems/1.8/gems/mysql-2.7 for inspection.
Results logged to /opt/local/lib/ruby/gems/1.8/gems/mysql-2.7/gem_make.out

Кто-нибудь получил mysql для работы с рельсами на снежном барсе? Если да, то какова ваша установка и еще лучше, что я могу сделать, чтобы воспроизвести ее?

4b9b3361

Ответ 1

Я просто пережил ту же боль... вот что сработало для меня:

  • Загрузите/установите 64-битный MySQL 5.1.37 с mysql.com
  • выполните следующие команды:
    sudo gem update --system

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

Я также удалил все камни mysql, которые плавали вокруг моего 10.5 дней, что может сделать это, если выше не работает для вас:)

Ответ 2

Важное значение имеет перестроение mysql как 64-битного или установка 64-битной версии, но вам также необходимо убедиться, что вы создаете собственные части драгоценного камня mysql как 64-битные (это не относится, если вы находитесь на одном из оригинальных процессоров Intel Core Duo macs).

Здесь волшебная команда:

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

Вы должны установить ARCHFLAGS, как показано выше, всякий раз, когда вы выполняете установку gem с помощью собственных компонентов на Snow Leopard.

Ответ 3

Если вы используете bundler, вы можете использовать "config bundle" для установки правильных аргументов сборки для mysql следующим образом:

bundle config build.mysql --with-mysql-config=/usr/local/mysql/bin/mysql_config

Ответ 4

Я долгое время сражался с этим и, наконец, работал над Snow Leopard. Я закончил установку Ruby, RubyGems и MySQL из источника (см. Hivelogic tutorial для установки Ruby и RubyGems. Учебник MySQL связан внизу). Я, наконец, получил камень для установки, но я все еще получал

dyld: lazy symbol binding failed: Symbol not found: _mysql_init
  Referenced from: /Library/Ruby/Site/1.8/universal-darwin10.0/mysql.bundle
  Expected in: flat namespace

dyld: Symbol not found: _mysql_init
  Referenced from: /Library/Ruby/Site/1.8/universal-darwin10.0/mysql.bundle
  Expected in: flat namespace

Trace/BPT trap

Наконец я удалил mysql.bundle (я понятия не имею, для чего это), и все это сработало.

sudo rm -f /Library/Ruby/Site/1.8/universal-darwin10.0/mysql.bundle

Надеюсь, что это поможет кому-то.

Ответ 5

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

sudo gem install mysql -- --with-mysql-config=/your/mysql/config

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/usr/bin/ruby
--with-mysql-config

Помните, что вам нужны файлы mysql dev для создания этого драгоценного камня.

Ответ 6

У меня возникли проблемы с настройкой моей конфигурации после установки снежного барса. Я нашел MAMP в http://www.mamp.info, и он связывает Apache, PHP и MySQL. вы устанавливаете его как приложение, и оно просто работает. Возможно, стоит попробовать, и это бесплатно.

сетка

Ответ 7

Я думал, что отвечу на свой вопрос. Кажется, что проблема не в mysql, а в bindings ruby ​​mysql. Я понял это, потому что, когда я подключил Querius (мой mysql gui), он смог подключиться.

Вот как построить из исходных исправлений привязки:

cd /tmp
wget http://www.tmtm.org/en/ruby/mysql/ruby-mysql-0.2.6.tar.gz
tar xvfz ruby-mysql-0.2.6.tar.gz
cd ruby-mysql-0.2.6
./configure
make
sudo make install

Есть много библиотек, которые мне придется строить из источника на Snow Leopard, и они продолжают появляться. MacPorts, похоже, не обновляется достаточно для всех библиотек, поэтому я могу сделать это самостоятельно. Далее: freetype (http://download.savannah.gnu.org/releases-noredirect/freetype/)

Ответ 9

У меня была эта же проблема, и вот что сработало для меня.

  • Установите Snow Leopard и 64-битный MySQL DMG.

  • Создайте/etc/my.cnf, чтобы указать на мой предыдущий каталог данных MySQL (как описано здесь) и запустить

    sudo mysql_upgrade.

  • Откройте IRB и переустановите все мои драгоценные камни, используя (через blog.costan.us/2009/07/rebuild-your-ruby-gems-if-you-update-to.html).

    `gem list`.each_line {| line | system 'sudo gem install # {line.split.first}'}

  • Утилита MySQL, которую я установил.

  • Установленный MySQL с помощью

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

С этим все, кажется, работает до сих пор. * выбить дерево *

Ответ 10

Инструкции по настройке ARCHFLAGS и передаче --mysql-config =..., похоже, не были достаточными, чтобы решить это для меня на Snow Leopard. В дополнение к этому я добавил:

DYLD_LIBRARY_PATH="/usr/local/mysql/lib:$DYLD_LIBRARY_PATH"

в мой профиль bash, и это решило его для меня.

Ответ 11

Если вы предпочитаете домашний brew, вместо установки MySQL вручную.

Отключите существующий глагол mysql (если есть):

 sudo gem uninstall mysql 

Найдите файл mysql_config:

 find /usr -name 'mysql_config' 

Переустановите mysql gem:

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

Примечание: замените /usr/local/bin/ на соответствующий путь mysql_config, найденный на шаге 2. Также на моем blog.

Ответ 12

Ян Селби, спасибо вам большое, но мне пришлось удалить sudo перед sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

Я устанавливал в gemset и использую rvm, который, как я думаю, просит вас не использовать ключевое слово sudo. Большое спасибо.

Ответ 13

Я решил это так:

  • после установки dmg файла mysql  
  • bundle config build.mysql --with-mysql-config =/usr/local/mysql/bin//mysql_config
  • env ARCHFLAGS = "- arch x86_64"
  • установить пакет

Ответ 14

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

Он работает с 21 августа 2011 года, используя Rails 3.0.10, MySQL 5.5.15 и RVM 1.7.2. Он должен работать с будущими версиями Rails версии 3.0.x, MySQL 5.5.x и RVM 1.7.x.

  • Установите XCode, если он еще не установлен. Я использовал 4.0.2. К сожалению, это теперь было снято Apple, но может быть доступно в других местах в Интернете. Версия 3.2.x можно скачать бесплатно с Apple, но я не тестировал ее с помощью этого руководства, возможно, это тоже работает.

  • Установите rvm:

    user$ bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)
    
    user$ echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function' >> ~/.bash_profile
    
    user$ source .bash_profile
    
  • Установите версию Ruby (например, 1.9.2) в rvm, основные инструкции по использованию здесь.

    user$ rvm install 1.9.2
    user$ rvm use 1.9.2
    
  • Создайте gemset для рубина rvm, установленного на шаге 2 (x - номер версии).

    user$ rvm gemset create rails30x
    user$ rvm [email protected]
    
  • Установить Rails 3.0.x(x - номер версии).

    user$  gem install rails -v 3.0.x.
    
  • Загрузите и установите пакет MySQL 5.5.x, элемент запуска и панель настроек. Все три из них включены в установочный файл DMG. Также установите MySQL WorkBench.

    Найдите/usr/local/mysql-version-name/support-files (вставьте правильное имя каталога MySQL) и отредактируйте mysql.server(с привилегиями root). Вокруг строки 46 найдите строки, которые читаются:

    basedir=
    datadir=
    

    и измените их на чтение (вставив правильное имя каталога MySQL):

    basedir=/usr/local/mysql-version-name
    datadir=/usr/local/mysql-version-name/data
    

    Сохраните файл. Теперь MySQL можно запустить с панели настроек.

    Чтобы включить rails 3 для использования mysql, установите gem mysql2 (см. следующий шаг). Во-первых, вам нужно установить DYLD_LIBRARY_PATH, чтобы включить каталог библиотеки MySQL. Для этого отредактируйте файл ~/.bash_profile в своем и включить следующее (вставьте правильное имя каталога MySQL):

    export DYLD_LIBRARY_PATH=/usr/local/mysql-version-name/lib:$DYLD_LIBRARY_PATH
    

    Без включения каталога в DYLD_LIBRARY_PATH сообщение об отсутствии библиотеки и сервер будет прерван.

  • Установите mysql2 gem. (по состоянию на май 2011 года версия 0.2.7 - это самая последняя рабочая версия с Rails 3.0.x).

    user$ gem install mysql2 -v 0.2.7 
    
  • Создайте приложение rails и соответствующую ему базу данных (appname_development).

    user$ rails new appname
    
  • Добавьте это в приложение Gemfile: gem 'mysql2', "0.2.7"

  • Добавьте это в приложение database.yml:

    development: 
      adapter: mysql2
      encoding: utf8
      reconnect: false
      database: appname_development
      pool: 5
      username: username
      password: pwd
      host: localhost
    
  • запустите приложение и отметьте "О вашей прикладной среде". Все должно работать правильно.

Ответ 15

Я пробовал трюк archflags много раз с небольшими вариациями, но он никогда не работал у меня.

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

Я создал и установил свою собственную версию, которая работала для меня во всех отношениях, кроме этого. Поскольку все остальное работает нормально, я не могу угадать, что в плагине mysql есть некоторые фанки-предположения. Во всяком случае, все, что я сделал, это switch/usr/bin, чтобы быть первым на моем пути снова. Я смог установить рубин в /usr/local/ruby -1.8.7 и/usr/local/ruby-1.9.1, чтобы иметь возможность легко переключаться. Думаю, я бы упомянул об этом, так как решение archflags, похоже, работает для многих людей, но не совсем для всех.

Ответ 16

Я переименовал программу mysql_config из $MYSQL_HOME/bin в другое, чтобы не удалось найти конфигурацию script у установщика gem. Несмотря на то, что я использовал параметр libs, установщик gem всегда использовал параметры компиляции из моей установки mysql, которая является жирной бинарной. Но установка ruby ​​по умолчанию - только x86_64, и, следовательно, компиляция жемчужины терпит неудачу. После переименования программы mysql_config следующая команда отлично справилась и установила драгоценный камень:

sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-dir=/usr/local/mysql

Ответ 17

эта статья решила проблему для меня:)

http://techliberty.blogspot.com/2009/12/dealing-with-rake-aborted-uninitialized.html

  • До Leopard

    sudo gem install mysql -- --with-mysql-dir=/usr/local/mysql

    • Leopard на машине PPC:

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

    • Leopard на машине Intel:

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

    • Snow Leopard (только для Intel):

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

Ответ 18

Если вы устанавливаете драгоценный камень mysql с RVM, вам нужно использовать следующий код для его установки

sudo env ARCHFLAGS="-arch x86_64" gem install mysql

Этот метод работал у меня в Leopard Server, ни один из вышеперечисленных