Kesalahan menginstal mysql2: Gagal membangun ekstensi asli permata

485

Saya mengalami beberapa masalah ketika mencoba memasang mysql2permata untuk Rails. Ketika saya mencoba menginstalnya dengan menjalankan bundle installatau gem install mysql2itu memberi saya kesalahan berikut:

Kesalahan menginstal mysql2: ERROR: Gagal membangun ekstensi asli permata.

Bagaimana saya bisa memperbaiki ini dan berhasil menginstal mysql2?

spacemonkey
sumber
Dalam kasus saya ruby ​​2.1 tidak ada kesalahan ditampilkan tetapi dibekukan selama beberapa menit. Jawaban Spacemonkey memperbaikinya.
Lucio

Jawaban:

916

Di Ubuntu / Debian dan distribusi lainnya menggunakan aptitude:

sudo apt-get install libmysql-ruby libmysqlclient-dev

Paket libmysql-rubytelah dihapus dan diganti oleh ruby-mysql. Ini adalah di mana saya menemukan solusi.

Jika perintah di atas tidak berfungsi karena libmysql-rubytidak dapat ditemukan, yang berikut ini sudah cukup:

sudo apt-get install libmysqlclient-dev

Di Red Hat / CentOS dan distribusi lainnya menggunakan yum:

sudo yum install mysql-devel

Di Mac OS X dengan Homebrew :

brew install mysql
spacemonkey
sumber
5
saya memiliki masalah yang sama pada windows 7..any any ideas? perintah di atas tidak bekerja untuk saya ..
femi
37
Halo, saya menggunakan Ubuntu 12.04 dengan Ruby 1.9.3 dan Rails 3.2.8 dan dalam kasus saya, pemasangan libmysqlclient-devsudah cukup.
SMMousavi
2
Jika Anda menggunakan Mac OSX: perbarui ke versi terbaru XCode dan instal Alat Pengembangan. Saya memiliki masalah instalasi mysql yang sama (bahkan ketika menggunakan --with-mysql-config = / usr / local / mysql / bin / mysql_config)
Americo Savinon
2
Tidak perlu libmysql-ruby karena saya telah menginstal Ruby via RVM
Michael Lang
1
Untuk windows coba jawaban Ticked dari stackoverflow.com/questions/19014117/…
nitigyan
60

Saya menggunakan mac dan menggunakan homebrew untuk menginstal program open source. Saya memang harus menginstal alat-alat mac Dev untuk menginstal homebrew, tetapi setelah itu sederhana:

brew install mysql

untuk menginstal mysql. Saya tidak punya masalah permata mysql sejak itu.

Kelsin
sumber
3
Saya mendapatkan kesalahan bahkan setelah melakukan ini. Haruskah saya melewati beberapa opsi ketika saya melakukan permata di mysql2 ??
hnprashanth
Setelah menjalankan ini saya tidak punya masalah menginstal permata ruby ​​mysql2 di Mac OSX Lion.
KrisG
3
Jika ini tidak membantu, cobalah brew link mysql --force.
Chuck Batson
34

di sini adalah solusi untuk pengguna windows , semoga membantu!

Menggunakan MySQL dengan Rails 3 di Windows

  • Instal railsinstaller -> www.railsinstaller.org (Saya menginstalnya ke c: \ Rails)

  • Instal MySQL (Saya menggunakan MySQL 5.5) -> dev.mysql.com/downloads/installer/

--- untuk instalasi mySQL ---

Jika Anda belum menginstal kedua file ini, Anda mungkin memerlukannya untuk membuat MySQL Anda menjadi

vcredist_x86.exe -> http://www.microsoft.com/download/en/details.aspx? id = 5555 dotNetFx40_Full_x86_x64.exe -> http://www.microsoft.com/download/en/details.aspx?id=17718

Gunakan instal default Mesin Pengembang

-MySQL Server Config-
port: 3306
nama layanan windows: MySQL55
mysql root pass: root (Anda dapat mengubahnya nanti)
(nama pengguna: root)
-MySQL Server Config-

--- untuk instalasi mySQL ---


--- Instal mysql2 Gem ---

Penting: Lakukan ini dengan Git Bash Command Line (ini diinstal dengan railsinstaller) -> start / Git Bash

gem instal 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 "'

Sekarang permata seharusnya sudah diinstal dengan benar.

Terakhir salin file libmysql.dll dari
C: \ Program Files \ MySQL \ MySQL Server 5.5 \ lib
hingga
C: \ Rails \ Ruby1.9.2 \ bin

--- Instal mysql2 Gem ---


Anda sekarang akan dapat menggunakan aplikasi Rails Anda dengan MySQL, jika Anda tidak yakin cara membuat aplikasi Rails 3 dengan MySQL baca terus ...


--- Dapatkan aplikasi Rails 3 dengan MySQL ---

Buka command prompt (bukan Git Bash) -> start / cmd
Navigasikan ke folder Anda (c: \ Sites)
Buat aplikasi rails baru

rails new world

Hapus file c: \ Sites \ world \ public \ index.html
Edit file c: \ Sites \ world \ config \ routes.rb
tambahkan baris ini -> root: ke => 'cities # index'

Buka command prompt (menghasilkan tampilan dan pengontrol)

rails generate scaffold city ID:integer Name:string CountryCode:string District:string Population:integer



Edit file c: \ Sites \ world \ app \ models \ city.rb agar terlihat seperti ini

class City < ActiveRecord::Base
 set_table_name "city"
end

Edit file c: \ Sites \ world \ config \ database.yml agar terlihat seperti ini

development:
adapter: mysql2
encoding: utf8
database: world
pool: 5
username: root
password: root
socket: /tmp/mysql.sock

tambahkan ke gemfile

gem 'mysql2'

Buka command prompt windows cmd, bukan Git Bash (jalankan aplikasi Anda!)
Navigasikan ke folder aplikasi Anda (c: \ Sites \ world)

rails s

Buka browser Anda di sini -> http: // localhost: 3000

--- Dapatkan aplikasi Rails 3 dengan MySQL ---

Francois
sumber
Terima kasih, masalahnya adalah saya menggunakan Widnows PowerShell dan bukan command prompt yang normal. sekarang sudah berfungsi :)
Danpe
host harus 127.0.0.1, dan jika kata sandi adalah angka, itu harus dimasukkan ke dalam kutipan ex '123456' kalau tidak kita bisa mengetikkan secara normal ex admin123
duykhoa
3
Menggunakan XAMPP:gem install mysql2 -- --with-mysql-dir=C:\xampp\mysql
Mifeng
Lihatlah path --with-mysql-include: instal gem mysql2 - --platform = ruby ​​--with-mysql-lib = "d: \ mariadb \ lib" --with-mysql-include = "d: \ mariadb \ include \ mysql "
Ivan
@Mifeng bekerja sangat baik untuk saya tetapi saya menggunakan GitBash dan diperlukan -- --with-mysql-dir="C:\xampp\mysql"tanpa tanda kutip `` saya dilucuti. Terima kasih
Mutmatt
20

Saya memiliki beberapa komputer, prosesor 32 dan 64 bit, mereka berjalan di Ubuntu Linux, rilis Maverick (10.10).

Saya memiliki masalah yang sama, dan bagi saya, sudo apt-get install libmysql-ruby libmysqlclient-dev pekerjaan itu !!!

OfficeYA
sumber
19

Untuk MacOS Mojave :

gem install mysql2 -v '0.5.2' -- --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include

Allen
sumber
serta untuk MacOS Catalina
Vlad
17

Cara lain untuk pengguna MacOS

Jika Anda menggunakan "brew" untuk menginstal mysql:

gem install mysql2 -v 'x.x.x' -- --with-mysql-config=/usr/local/Cellar/mysql/y.y.y/bin/mysql_config

xxx = versi permata mysql2 yang ingin Anda instal
yyy = versi mysql yang telah Anda instal ls /usr/local/Cellar/mysqluntuk menemukannya.

aruanoc
sumber
Mencoba ~ 10 jawaban dari semua jenis pertanyaan yang diajukan di sini ... Anda menyelesaikannya. Terima kasih :)
Stan
7

Sudahkah Anda mencoba menggunakan

 gem install mysql -- --with-mysql-lib=/usr/lib/mysql/lib 

untuk menentukan lokasi direktori basis serta jalur ke perpustakaan MySQL yang diperlukan untuk menyelesaikan instalasi permata?

Sumber: Instal MySQL Gem ERROR: Gagal membangun ekstensi asli gem Forum MySQL :: Ruby :: Bantuan diperlukan dengan menginstal MySQL binding untuk Ruby

João Pereira
sumber
Bekerja dengan baik. Saya harus menggunakan jalur yang berbeda, yang saya temukan dengan menelepon which mysqldan kemudian menemukan libdirektori dari sana.
Joshua Pinter
7

Jika Anda menggunakan yum, cobalah:

sudo yum install mysql-devel
Mark Locklear
sumber
Ini bekerja untuk saya di Amazon EC2 Micro Instance, berbasis CentOS.
Lennon
5

Ini menyelesaikan masalah saya sekali di 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
Carlos Pardilla
sumber
Saya hendak memposting sumber tetapi saya melihat pengguna Ritesh Kumar telah melakukannya. Jadi pahalanya, bukan milikku.
Carlos Pardilla
Jika lib Anda tidak memiliki folder pilihan:gem install mysql2 --platform=ruby -- --with-mysql-dir=X: --without-opt-dir
Junior Mayhé
5

Jika Anda masih mengalami masalah ....

Coba pasang

   sudo apt-get install ruby1.9.1-dev
capu
sumber
4

Saya memiliki masalah ini pada Windows 7. Ini tampaknya masalah ketidakcocokan dan solusinya adalah sebagai berikut:

Unduh libmySQL.dllfile dari penginstal InstantRails yang lebih lama. Ini tersedia dari repo InstantRails GitHub .

Selanjutnya, salin file itu ke folder Ruby / bin Anda.

Sekarang, kamu baik-baik saja;)

santo101
sumber
1
Hrm :( Saya mencoba ini tetapi masih sampai di sana kesalahan ketika mencoba menjalankan bundle install.
aakoch
3

Saya mendapat kesalahan ini juga. Dipecahkan dengan menginstal paket pengembangan. Saya menggunakan lengkungan dan itu:

sudo pacman -S base-devel

yang dipasang:

m4, autoconf, automake, bison, fakeroot, flex, libmpc, ppl, cloog-ppl, elfutils, gcc,
libtool, make, patch, pkg-config

tapi saya pikir itu benar-benar membutuhkan make dan gcc. Output kesalahan berkata (pada mesin saya, antara lain):

"Anda harus menginstal alat pengembangan terlebih dahulu."

Jadi itu adalah keputusan yang jelas dan itu membantu.

arty
sumber
3

Anda harus menginstal beberapa dependensi

sudo apt-get install libmysql-ruby libmysqlclient-dev
vipin
sumber
3

Pada Debian Stretch paket yang berfungsi untuk saya adalah default-libmysqlclient-dev

sudo apt-get update && apt-get install -y default-libmysqlclient-dev

Ali Yazdani
sumber
3

Dalam kasus saya ini membantu:

$ export LDFLAGS="-L/usr/local/opt/openssl/lib"
$ export CPPFLAGS="-I/usr/local/opt/openssl/include"

Kemudian:

gem install mysql2 -v '0.5.2' --source 'https://rubygems.org/' -- --with-cppflags=-I/usr/local/opt/openssl/include --with-ldflags=-L/usr/local/opt/openssl/lib

Hasil:

Building native extensions with: '--with-cppflags=-I/usr/local/opt/openssl/include --with-ldflags=-L/usr/local/opt/openssl/lib'
This could take a while...
Successfully installed mysql2-0.5.2
Parsing documentation for mysql2-0.5.2
Installing ri documentation for mysql2-0.5.2
Done installing documentation for mysql2 after 0 seconds
1 gem installed

Lihat posting ini (PERINGATAN: Bahasa Jepang di dalamnya).

Nobita
sumber
3

Di Ubuntu (18.04)

saya dapat mengatasi masalah ini dengan menjalankan yang berikut:

sudo apt-get install build-essential libmysqlclient-dev
gem install mysql2

referensi

Paa Yaw
sumber
2

Saya mengalami kesalahan ini pada mac saya dan menemukan bahwa saya perlu meng-upgrade dari mysql 32bit ke mysql 64 bit untuk mendapatkan kesalahan ini untuk pergi. Saya menjalankan OSX 10.6 pada intel macbook pro dengan ruby ​​1.9.2 dan rails3.0.0

Saya juga perlu menginstal xcode untuk mendapatkan utilitas unix seperti "make" yang diperlukan untuk mengkompilasi permata.

setelah ini selesai saya bisa menjalankan gem install mysql dan gem install mysql2 tanpa kesalahan.

lofte
sumber
1

Untuk pengguna windows: Anda mengatur lib dan memasukkan path mysql Anda, misalnya, jika Anda menggunakan xampp Anda dapat memiliki seperti ini:

gem install mysql2 -- '--with-mysql-lib="C:\xampp\mysql\lib" --withmysql-include="C:\xampp\mysql\include"'
Arman Ortega
sumber
1

Solusi hanya berfungsi di Mac OS X

Jika Anda telah menginstal MySQL dengan homebrew, yang berhasil bagi saya adalah mencopot pemasangan MySQL, dan menginstal MySQL Community Edition melalui situs web MySQL ( https://www.mysql.com/ ).

Setelah diinstal, cukup masukkan kembali perintah ke gem install mysql2atau jika perlu sudo gem install mysql2,, jika Anda mendapatkan izin yang ditolak.

the12
sumber
0

Saya mendapatkan permata yang dibangun di Mac OS X 10.6.6 dengan 1) Memastikan paket alat Pengembang terinstal 2) Mengunduh paket MySQL saat ini (5.5.8 dalam kasus saya) dari Sumber 3) Menginstal alat cmake dari cmake.org 4 ) Mengikuti instruksi pada bagian 2.11 dari INSTALL-SUMBER dari file distribusi mysql 5) sudo gem install mysql2 -- --srcdir=/usr/local/mysql/include Permata berhasil dibangun, tetapi ada dua kesalahan dalam dokumentasi yang dikeluhkan oleh rdoc dan ri. Tetapi sekarang ketika saya mencoba untuk meminta 'mysql2' saya mendapatkan

LoadError: no such file to load -- mysql2/mysql2

Saya berharap kesalahan yang akan saya dapatkan adalah bahwa libmysqlclient.16.dylib tidak dapat ditemukan karena kami menemukan itu di pos lain (mencari install_name_tool).

$ PATH saya memiliki / usr / local / mysql di dalamnya (di situlah sumber dan file yang dibangun berada), jadi saya agak bingung. Jika ada yang punya pikiran, saya akan periksa kembali setelah beberapa jam tidur.

tobinjim
sumber
0

Setelah Anda menyelesaikan masalah mysql-dev, Anda mungkin perlu menghapus instalasi mysql2 yang buruk. Perhatikan baik-baik pesan setelah menginstal $ bundle. Anda mungkin perlu

rm -rf vendor/cache/
rm -rf ./Zentest

Ini akan menghapus instalasi mysql2 yang buruk sehingga instalasi $ bundle akhir dapat membuat yang bagus.

mmell
sumber
0

Mendapat "Anda harus menginstal alat pengembangan terlebih dahulu." kesalahan ketika mencoba untuk menginstal permata mysql2 setelah memutakhirkan ke Mac OS X Mountain Lion . Rupanya melakukan peningkatan ini menghapus kompiler baris perintah.

Memperbaiki:

  • Saya mencopot versi Xcode saya yang sangat lama (menjalankan skrip penghapusan instalan di / Pengembang / Perpustakaan). Kemudian dihapus direktori / Pengembang.
  • Pergi ke AppStore dan mengunduh Xcode.
  • Meluncurkan Xcode dan masuk ke Preferensi -> Unduhan, dan menginstal alat baris perintah.
Sunil D.
sumber
0

Anda mendapatkan masalah ini karena Anda belum menginstal MySql. Sebelum menginstal permata mysql2. Instal MySQL. Setelah itu permata mysql2 akan diinstal.

Amrit Dhungana
sumber
0

Saya hanya ingin menambahkan jawaban ini khusus untuk Pengguna Mac .

Server saya berjalan dengan baik sampai saya memperbarui xcode saya. Saat memulai server rails saya kesalahan ditampilkan seperti ini

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)

Dan ada saran untuk menginstal permata mysql2 di akhir pesan kesalahan. Jadi ketika saya mencoba menginstalnya saya mendapat kesalahan seperti yang disebutkan di atas dalam pertanyaan ini. Kesalahan yang saya dapatkan adalah sebagai berikut

ERROR:  Error installing mysql2:
ERROR: Failed to build gem native extension.

Jadi seperti yang disarankan dalam posting ini saya mencoba 'brew install mysql' dan yang berhenti mengatakan bahwa versi mysql sudah dan sudah diinstal. Tapi ada peringatan sebelum mengatakannya

Warning: You have not agreed to the Xcode license.
Builds will fail! Agree to the license by opening Xcode.app or running:
xcodebuild -license

Kemudian saya mencoba ini sudo xcodebuild -licensedan mengetik 'setuju' di akhir. Anda harus menjadi root untuk menyetujui lisensi.

Setelah ini, saya kembali mencoba menginstal bundel dan kemudian semuanya berfungsi dengan baik seperti biasa. [Bahkan karena pembaruan xcode ini, saya juga punya masalah dengan menara saya.]

Sony Mathew
sumber
0

libmysql-ruby telah dihapus dan diganti. Perintah baru:

 sudo apt-get install ruby-mysql libmysqlclient-dev
Jerome
sumber