У меня возникают проблемы при установке mysql2
gem для Rails. Когда я пытаюсь установить его, запустив bundle install
или gem install mysql2
, он вызывает следующую ошибку:
Ошибка при установке mysql2: ERROR: Не удалось создать собственное расширение gem.
Как я могу исправить это и успешно установить mysql2
?
В Ubuntu/Debian и других дистрибутивах с использованием aptitude:
sudo apt-get install libmysql-ruby libmysqlclient-dev
Пакет libmysql-ruby
был отключен и заменен на ruby-mysql
. Это, где я нашел решение.
Если приведенная выше команда не работает, потому что libmysql-ruby
не может быть найдена, должно быть достаточно:
sudo apt-get install libmysqlclient-dev
В Red Hat/CentOS и других дистрибутивах с помощью yum:
sudo yum install mysql-devel
В Mac OS X с Homebrew:
brew install mysql
libmysqlclient-dev
.
Я использую mac и использую homebrew для установки программ с открытым исходным кодом. Мне пришлось установить mac Dev инструменты для установки homebrew, но после этого это было просто:
brew install mysql
для установки mysql. С тех пор у меня не было проблемы с mysql gem.
вот решение для пользователей Windows, надеюсь, что это поможет!
Установить railsinstaller → www.railsinstaller.org(я установил его в c:\Rails)
Установить MySQL (я использовал MySQL 5.5) → dev.mysql.com/downloads/installer/
--- для установки mySQL ---
Если у вас уже нет этих двух файлов, вам могут понадобиться их, чтобы ваш MySQL стал
vcredist_x86.exe → http://www.microsoft.com/download/en/details.aspx?id=5555dotNetFx40_Full_x86_x64.exe → http://www.microsoft.com/download/en/details.aspx?id=17718
Использовать установку по умолчанию Разработчик-MySQL Server Config -
порт: 3306
имя службы Windows: MySQL55
mysql root pass: root (вы можете изменить это позже)
(имя пользователя: root)
-MySQL Server Config ---- для установки mySQL ---
--- Установите mysql2 Gem ---
Важно: Сделать это с помощью Git Bash Командная строка (это было установлено с помощью railsinstaller) → start/ Git Bash
gem install mysql2 - '--with-mysql-lib = "c:\Program Files\MySQL\MySQL Server 5.5\lib" --with-mysql-include = "c:\Program Files\MySQL\MySQL Server 5.5\include"
Теперь камень должен был правильно установить
Наконец, скопируйте файл libmysql.dll из
C:\Program Files\MySQL\MySQL Server 5.5\lib
к
C:\Rails\Ruby1.9.2\bin
--- Установите mysql2 Gem ---
Теперь вы сможете использовать свое приложение Rails с MySQL, если вы не знаете, как создать приложение Rails 3 с MySQL, прочитанное в...
--- Получите приложение Rails 3 с MySQL ---
Откройте командную строку (не Git Bash) → start/cmd
Перейдите в свою папку (c:\Sites)
Создайте новое приложение для рельсов
rails new world
Удалить файл c:\Sites\world\public\index.html
Отредактируйте файл c:\Sites\world\config\routes.rb
добавьте эту строку → root: to = > 'cities # index'
Откройте командную строку (сгенерируйте представления и контроллеры)
rails generate scaffold city ID:integer Name:string CountryCode:string District:string Population:integer
Отредактируйте файл c:\Sites\world\app\models\city.rb, чтобы выглядеть как
class City < ActiveRecord::Base
set_table_name "city"
end
Отредактируйте файл c:\Sites\world\config\database.yml, чтобы он выглядел как
development:
adapter: mysql2
encoding: utf8
database: world
pool: 5
username: root
password: root
socket: /tmp/mysql.sock
добавить в gemfile
gem 'mysql2'
Откройте командную строку windows cmd, а не Git Bash (запустите приложение!)
Перейдите в папку своего приложения (c:\Sites\world)
rails s
Откройте ваш браузер здесь → http://localhost:3000
--- Получите приложение Rails 3 с MySQL ---
У меня есть несколько компьютеров, 32 и 64-битный процессор, они запускаются в версии Ubuntu Linux, Maverick (10.10).
У меня была такая же проблема, и для меня
sudo apt-get install libmysql-ruby libmysqlclient-dev
сделал работу!!!
Если вы используете yum try:
sudo yum install mysql-devel
Пробовали ли вы использовать
gem install mysql -- --with-mysql-lib=/usr/lib/mysql/lib
чтобы указать расположение каталога базы данных, а также путь к библиотекам MySQL, необходимый для завершения установки gem?
Источники: Установка MySQL Gem ERROR: не удалось создать собственное расширение gem Форумы MySQL:: Ruby:: Справка, необходимая для установки привязки MySQL для Ruby
which mysql
и затем найдя каталог lib
оттуда.
Другой способ для пользователей MacOS
Если вы использовали "brew" для установки mysql:
gem install mysql2 -v 'x.x.x' -- --with-mysql-config=/usr/local/Cellar/mysql/y.y.y/bin/mysql_config
x.x.x = версия драгоценного камня mysql2, которую вы хотите установить
y.y.y = версия mysql, которую вы установили ls /usr/local/Cellar/mysql
, чтобы найти ее.
Если у вас все еще есть проблемы...
Попробуйте установить
sudo apt-get install ruby1.9.1-dev
У меня была проблема с моими окнами 7. Это, по-видимому, проблема несовместимости, и решение выглядит следующим образом: Загрузите файл mysql.dll из старого установщика InstantRails. Ссылка http://tinyurl.com/24ocp8u будет загружать только файл mysql.dll(ссылка на репозиторий svn для InstantRails). Затем скопируйте файл в папку Ruby/bin. Теперь вам хорошо идти;)
bundle install
.
Это решило мою проблему один раз в Windows:
subst X: "C:\Program files\MySQL\MySQL Server 5.5"
gem install mysql2 -v 0.x.x --platform=ruby -- --with-mysql-dir=X: --with-mysql-lib=X:\lib\opt
subst X: /D
gem install mysql2 --platform=ruby -- --with-mysql-dir=X: --without-opt-dir
Я тоже получил эту ошибку. Решено путем установки пакетов разработки. Я использую arch, и это было:
sudo pacman -S base-devel
который установлен:
m4, autoconf, automake, bison, fakeroot, flex, libmpc, ppl, cloog-ppl, elfutils, gcc,
libtool, make, patch, pkg-config
но я думаю, что на самом деле это нужно сделать и gcc. Вывод ошибки сказал (на моей машине, среди прочего):
"Сначала вы должны установить средства разработки".
Итак, это было очевидное решение, и это помогло.
Вам нужно установить некоторые зависимости
sudo apt-get install libmysql-ruby libmysqlclient-dev
Я столкнулся с этой ошибкой на своем mac и обнаружил, что мне нужно обновить с mysql 32bit до 64-разрядного mysql, чтобы эта ошибка исчезла. Я запускал OSX 10.6 на intel macbook pro с ruby 1.9.2 и rails3.0.0
Мне также понадобилось установить xcode, чтобы получить утилиты unix, такие как make, которые необходимы для компиляции драгоценного камня.
Как только это было сделано, мне удалось запустить gem install mysql и gem install mysql2 без ошибок.
Решение работает только на Mac OS X
Если вы установили MySQL с homebrew, то для меня работала деинсталляция MySQL и установка MySQL Community Edition через веб-сайт MySQL (https://www.mysql.com/).
После установки просто заново введите команду в gem install mysql2
или, если необходимо, sudo gem install mysql2
, если вы получаете разрешение на отклонение проблем.
Для пользователей Windows: Вы устанавливаете путь lib и include вашего mysql, например, если вы используете xampp, вы можете иметь следующее:
gem install mysql2 -- '--with-mysql-lib="C:\xampp\mysql\lib" --withmysql-include="C:\xampp\mysql\include"'
Для тех, кто использует Windows 7 и 64-разрядную MySQL
Если вы хотите использовать 64-битную MySQL, вы должны следовать инструкциям здесь (также здесь).
Существует также настраиваемый 64-разрядный соединитель, который работает без хлопот.
Я просто хотел добавить этот ответ специально для пользователей Mac.
Мой сервер работал отлично, пока я не обновил свой xcode. Во время запуска моего сервера rails ошибка была показана следующим образом:
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
/Users/user/.rvm/rubies/ruby-1.9.3-p448/bin/ruby extconf.rb --with-mysql-
checking for rb_thread_blocking_region()... /Users/user/.rvm/rubies/ruby-1.9.3-
p448/lib/ruby/1.9.1/mkmf.rb:381:in `try_do': The compiler failed to generate an
executable file. (RuntimeError)
И было предложение установить mysql2 gem в конце сообщения об ошибке. Поэтому, когда я попытался установить его, я получил ошибку, как указано выше в этом вопросе. Ошибка, которую я получил, выглядит следующим образом
ERROR: Error installing mysql2:
ERROR: Failed to build gem native extension.
Итак, как было предложено в этом посте, я попробовал "brew установить mysql", и он отказался сказать, что версия mysql так и так уже установлена. Но перед этим было предупреждение:
Warning: You have not agreed to the Xcode license.
Builds will fail! Agree to the license by opening Xcode.app or running:
xcodebuild -license
Затем я попробовал это sudo xcodebuild -license
и наберите "согласен" в конце. Вы должны быть root, чтобы согласиться с лицензией.
После этого я снова попытался установить пакет, и тогда все работает нормально, как обычно. [Даже из-за этого обновления xcode у меня также была проблема с моей башней.]
У вас возникает эта проблема, потому что вы не устанавливаете MySql. Перед установкой mysql2 gem. Установите MySQL. После этого монстр mysql2 будет установлен.
Получил "Сначала вы должны установить средства разработки". при попытке установить gem mysql2 после обновления до Mac OS X Mountain Lion. Очевидно, что это обновление удаляет компиляторы командной строки.
Чтобы исправить:
загрузить правильную версию mysqllib.dll, а затем скопировать ее в ruby bin, действительно работает для меня. Следуйте этим ссылкам mysql2 gem, скомпилированным для неправильной клиентской библиотеки mysql
После устранения проблем с mysql-dev вам может потребоваться удалить плохую установку mysql2. Посмотрите внимательно на сообщения после установки пакета $bundle. Возможно, вам понадобится
rm -rf vendor/cache/
rm -rf ./Zentest
Это очистит плохую установку mysql2, так что окончательная установка пакета $bundle может создать хороший.
Если вы все еще получаете ошибку, следуйте инструкциям по установке gq mysql2 на Rails 3 на -
http://rorguide.blogspot.com/2011/03/installing-mysql2-gem-on-ruby-192-and.html
где большинство пользователей смогли установить gem mysql2.
Я получил драгоценный камень, построенный на Mac OS X 10.6.6, с помощью
1) Обеспечение установки пакета инструментов разработчика
2) Загрузка текущего пакета MySQL (5.5.8 в моем случае) из источника
3) Установка инструмента cmake из cmake.org
4) Следуя инструкциям в разделе 2.11 INSTALL-SOURCE из файлов дистрибутива mysql
5) sudo gem install mysql2 -- --srcdir=/usr/local/mysql/include
Драгоценный камень построен успешно, но в документации, которую rdoc и ri жалуются, есть две ошибки.
Но теперь, когда я пытаюсь потребовать "mysql2", я получаю
LoadError: no such file to load -- mysql2/mysql2
Я надеялся, что ошибка, которую я получил бы, заключалась в том, что libmysqlclient.16.dylib не удалось найти, потому что мы поняли это в другом сообщении (выполните поиск install_name_tool).
В My $PATH есть /usr/local/mysql (что там, где расположены мои исходники и встроенные файлы), поэтому я немного в тупике. Если у кого есть какие-то мысли, я вернусь через несколько часов сна.