Используйте MySQL из AMPPS с Rails

3

Я пытаюсь использовать Rails с битом MySQL из Ampps, но когда я запускаю команду rails generate scaffold User name:string email:string, я получаю следующую ошибку:

dyld: lazy symbol binding failed: Symbol not found: _mysql_server_init
Referenced from: /Users/myusername/.rvm/gems/ruby-2.2.1/gems/mysql2-0.4.2/lib/mysql2/mysql2.bundle
  Expected in: flat namespace

dyld: Symbol not found: _mysql_server_init
  Referenced from: /Users/myusername/.rvm/gems/ruby-2.2.1/gems/mysql2-0.4.2/lib/mysql2/mysql2.bundle
  Expected in: flat namespace

Я уже настроил Ampps Mysql с моей средой, но мне не удалось заставить его работать с рельсами, у меня есть следующие конфигурации.

$ which mysql                                          
/Applications/AMPPS/mysql/bin/mysql

$ echo $PATH
/Users/myusername/.rvm/gems/ruby-2.2.1/bin:/Users/myusername/.rvm/gems/ruby-2.2.1@global/bin:/Users/myusername/.rvm/rubies/ruby-2.2.1/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/myusername/.rvm/gems/ruby-2.2.1/bin:/Users/myusername/.rvm/gems/ruby-2.2.1@global/bin:/Users/myusername/.rvm/rubies/ruby-2.2.1/bin:/Applications/AMPPS/php-5.4/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/myusername/.rvm/bin:/Users/myusername/.rvm/bin:/Applications/AMPPS/mysql/bin

$ ls -l /usr/local/lib/libmy*.dylib 
lrwxr-xr-x  1 myusername  admin  53 Jan  1 19:30 /usr/local/lib/libmysqlclient.18.dylib -> /Applications/AMPPS/mysql/lib/libmysqlclient.18.dylib

Я пробовал делать команды, но без успеха:

$ gem install mysql2 -- --with-mysql-lib=/Applications/AMPPS/mysql/lib --with-mysql-include=/Applications/AMPPS/mysql/include --with-mysql-config=/Applications/AMPPS/mysql/bin/mysql_config

И

bundle config build.mysql2 --with-mysql-lib=/Applications/AMPPS/mysql/lib --with-mysql-include=/Applications/AMPPS/mysql/include --with-mysql-config=/Applications/AMPPS/mysql/bin/mysql_config
bundle install

Любые идеи?

  • 0
    Что говорит file /Applications/AMPPS/mysql/bin/mysql ? Ошибки не найденных символов часто являются результатом несоответствия архитектуры.
  • 0
    По какой причине вы не хотите пометить мой ответ как принятый? Разве это не решило вашу проблему?
Показать ещё 1 комментарий
Теги:
ampps

1 ответ

1
Лучший ответ

Я загрузил этот пакет AMPPS и быстро выполнил проверку двоичного кода MySQL:

$ file /Volumes/AMPPS/AMPPS/mysql/bin/mysql
/Volumes/AMPPS/AMPPS/mysql/bin/mysql: Mach-O executable i386

Ваша 64-разрядная версия Ruby пытается связать с 32-битными библиотеками MySQL и не находит того, что она ищет. Ошибки "Символ не найден" часто являются признаком несоответствия архитектуры.

Моими советами вы должны установить эти программы из системы управления пакетами, например MacPorts или Homebrew. Я частично отношусь к MacPorts, поэтому я дам вам инструкции для этого. У меня создается впечатление, что Homebrew более популярен, но сам не использовал его.

  • Установить Xcode и инструменты командной строки Xcode
  • Согласитесь с лицензией Xcode в терминале: sudo xcodebuild -license
  • Установить MacPorts: https://distfiles.macports.org/MacPorts/MacPorts-2.3.4-10.11-ElCapitan.pkg
  • Обновить список портов: sudo port selfupdate
  • Убрать: sudo port install mysql56 rb-rails rb-mysql
  • Регулярно обновлять: sudo port selfupdate && sudo port -uc upgrade outdated

Таким образом, вы получаете правильно созданные двоичные файлы для своей системы, вы можете легко обновлять их, и вы не заполняете свою систему 2 гигабайтами вещей, которые вы не обязательно собираетесь использовать (5 разных версии PHP, несколько серверов баз данных, Perl, Python и т.д.) Кроме того, вы также получаете обновленные версии других утилит, таких как Ruby, вместо того, чтобы полагаться на устаревшую версию, поставляемую с операционной системой.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню