เกิดข้อผิดพลาดในการติดตั้ง mysql2: ไม่สามารถสร้างส่วนขยายดั้งเดิมของอัญมณี


485

ฉันมีปัญหาเมื่อพยายามติดตั้งmysql2gem สำหรับ Rails เมื่อฉันพยายามติดตั้งโดยการเรียกใช้bundle installหรือgem install mysql2มีข้อผิดพลาดต่อไปนี้:

เกิดข้อผิดพลาดในการติดตั้ง mysql2: ข้อผิดพลาด: ไม่สามารถสร้างส่วนขยายดั้งเดิมของอัญมณี

ฉันจะแก้ไขและติดตั้งสำเร็จได้mysql2อย่างไร


ในกรณีของฉันทับทิม 2.1 ไม่มีข้อผิดพลาดปรากฏขึ้น แต่มันค้างเป็นเวลาหลายนาที Spacemonkey คำตอบแก้ไขแล้ว
Lucio

คำตอบ:


915

บน Ubuntu / Debian และดิสทริบิวชันอื่น ๆ ที่ใช้ความถนัด:

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

5
ฉันมีปัญหาเดียวกันบน windows 7. ความคิดใด ๆ คำสั่งดังกล่าวข้างต้นไม่ได้ทำงานสำหรับฉัน ..
Femi

37
สวัสดีฉันใช้ Ubuntu 12.04 กับ Ruby 1.9.3 และ Rails 3.2.8 และในกรณีของฉันการติดตั้งlibmysqlclient-devก็เพียงพอแล้ว
SMMousavi

2
หากคุณใช้ Mac OSX: อัปเดตเป็นรุ่นล่าสุดของ XCode และติดตั้งเครื่องมือสำหรับการพัฒนา ฉันมีปัญหาการติดตั้ง mysql เดียวกัน (แม้เมื่อใช้ --with-mysql-config = / usr / local / mysql / bin / mysql_config)
Americo Savinon

2
ไม่ต้องการ libmysql-ruby ตั้งแต่ฉันติดตั้ง Ruby ผ่าน RVM
Michael Lang

1
สำหรับ windows ลองใช้คำตอบที่ถูก
ticked

60

ฉันใช้ mac และใช้homebrewเพื่อติดตั้งโปรแกรมโอเพ่นซอร์ส ฉันต้องติดตั้งเครื่องมือ mac Dev เพื่อติดตั้ง homebrew แต่หลังจากนั้นมันง่าย:

brew install mysql

เพื่อติดตั้ง mysql ฉันไม่ได้มีปัญหาอัญมณี mysql ตั้งแต่


3
ฉันได้รับข้อผิดพลาดแม้หลังจากทำเช่นนี้แล้ว ฉันควรผ่านตัวเลือกบางอย่างเมื่อฉันทำอัญมณีฉัน mysql2 หรือไม่?
hnprashanth

หลังจากทำงานนี้ฉันก็ไม่มีปัญหาในการติดตั้ง mysql2 ruby ​​gem บน Mac OSX Lion
KrisG

3
brew link mysql --forceถ้าเรื่องนี้ไม่ได้ช่วยให้ลอง
Chuck Batson

34

นี่คือทางออกสำหรับผู้ใช้ windowsหวังว่าจะช่วยได้!

ใช้ MySQL กับ Rails 3 บน 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 = 5555 dotNetFx40_Full_x86_x64.exe -> http://www.microsoft.com/download/en/details.aspx?id=17718

ใช้ค่าเริ่มต้นติดตั้งเครื่องสำหรับนักพัฒนาซอฟต์แวร์

-MySQL Server Config-
พอร์ต: 3306
windows service name: MySQL55
mysql root pass: root (คุณสามารถเปลี่ยนได้ในภายหลัง)
(ชื่อผู้ใช้: root)
-MySQL Server Config-

--- สำหรับการติดตั้ง mySQL ---


--- ติดตั้ง mysql2 Gem ---

สิ่งสำคัญ: ทำสิ่งนี้ด้วย Git Bash Command Line (ซึ่งถูกติดตั้งพร้อมกับ railsinstaller) -> start / Git Bash

gem ติดตั้ง mysql2 - '- ด้วย-mysql-lib = "c: \ โปรแกรมไฟล์ \ MySQL \ MySQL Server 5.5 \ lib "- ด้วย mysql-include =" c: \ Program Files \ MySQL \ MySQL Server 5.5 \ include "'

ตอนนี้อัญมณีควรติดตั้งอย่างถูกต้อง

สุดท้ายคัดลอกไฟล์ libmysql.dll จาก
C: \ Program Files \ MySQL \ MySQL เซิร์ฟเวอร์ 5.5 \ lib
to
C: \ Rails \ Ruby1.9.2 \ bin

--- ติดตั้ง mysql2 Gem ---


ตอนนี้คุณจะสามารถใช้แอพ Rails ของคุณกับ MySQL ได้แล้วหากคุณไม่แน่ใจว่าจะสร้างแอพ Rails 3 ด้วย MySQL บน ...


--- รับแอพ Rails 3 ไปพร้อมกับ MySQL ---

พร้อมรับคำสั่งเปิด (ไม่ใช่ Git Bash) -> start / cmd
นำทางไปยังโฟลเดอร์ของคุณ (c: \ Sites)
สร้างแอพ Rails ใหม่

rails new world

ลบไฟล์ c: \ Sites \ world \ public \ index.html
แก้ไขไฟล์ c: \ Sites \ world \ config \ route.rb
เพิ่มบรรทัดนี้ -> root: ถึง => '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'

เปิดหน้าต่างพร้อมรับคำสั่ง cmd ไม่ใช่ Git Bash (เรียกใช้แอพของคุณ!)
นำทางไปยังโฟลเดอร์แอปของคุณ (c: \ Sites \ world)

rails s

เปิดเบราว์เซอร์ของคุณที่นี่ -> http: // localhost: 3000

--- รับแอพ Rails 3 ไปกับ MySQL ---


ขอบคุณปัญหาคือว่าฉันใช้ Widnows PowerShell และไม่ใช่พรอมต์คำสั่งปกติ ตอนนี้ก็ทำงาน :)
Danpe

โฮสต์จะต้องเป็น 127.0.0.1 และหากรหัสผ่านเป็นตัวเลขจะต้องใส่ไว้ในเครื่องหมายคำพูด '123456' มิฉะนั้นเราสามารถพิมพ์ปกติ ex admin123
duykhoa

3
ใช้ XAMPP:gem install mysql2 -- --with-mysql-dir=C:\xampp\mysql
Mifeng

ดูเส้นทาง - ด้วย mysql รวม: อัญมณีติดตั้ง mysql2 - - แพลตฟอร์ม = ทับทิม - กับ mysql-lib = "d: \ mariadb \ lib" - กับ mysql- รวม = "d: \ mariadb \ รวม \ mysql "
อีวาน

@Mifeng ใช้งานได้ดีสำหรับฉัน แต่ฉันใช้ GitBash และต้องการ-- --with-mysql-dir="C:\xampp\mysql"โดยไม่ใส่เครื่องหมายอัญประกาศ `` `ฉันถูกปล้น ขอบคุณ
Mutmatt

20

ฉันมีคอมพิวเตอร์หลายเครื่องตัวประมวลผล 32 บิตและ 64 บิตพวกเขาทำงานบน Ubuntu Linux ปล่อย Maverick (10.10)

ฉันมีปัญหาเดียวกันและสำหรับฉัน sudo apt-get install libmysql-ruby libmysqlclient-dev ก็ทำงานได้ !!!



17

อีกวิธีหนึ่งสำหรับผู้ใช้ MacOS

หากคุณใช้ "ชง" เพื่อติดตั้ง mysql:

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

xxx = รุ่นของ mysql2 gem ที่คุณต้องการติดตั้ง
yyy = เวอร์ชันของ mysql ที่คุณติดตั้งls /usr/local/Cellar/mysqlเพื่อค้นหา


พยายาม 10 คำตอบจากคำถามทุกประเภทที่ถามที่นี่ ... คุณแก้ไขแล้ว ขอบคุณ :)
Stan

7

คุณเคยลองใช้

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

การระบุตำแหน่งของไดเรกทอรี thebase รวมถึงเส้นทางไปยังห้องสมุด MySQL ที่จำเป็นในการติดตั้ง gem ให้เสร็จสมบูรณ์?

แหล่งที่มา: การ ติดตั้ง MySQL Gem ข้อผิดพลาด: การสร้างส่วนขยายเนที ดั้งเดิมของฟอรัม MySQL ไม่สำเร็จ :: Ruby :: ต้องการความช่วยเหลือในการติดตั้ง MySQL binding สำหรับ Ruby


ใช้งานได้ดีมาก ฉันต้องใช้เส้นทางที่แตกต่างซึ่งฉันพบโดยการโทรwhich mysqlแล้วหาlibไดเรกทอรีจากที่นั่น
Joshua Pinter


5

วิธีนี้ช่วยแก้ไขปัญหาของฉันได้ครั้งหนึ่งใน 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

ฉันกำลังจะโพสต์แหล่งข้อมูล แต่ฉันเห็นผู้ใช้ Ritesh Kumar ได้ทำไปแล้ว ดังนั้นบุญของเขาไม่ใช่ของฉัน
Carlos Pardilla

หาก lib ของคุณไม่มีโฟลเดอร์ opt:gem install mysql2 --platform=ruby -- --with-mysql-dir=X: --without-opt-dir
Junior Mayhé


4

ฉันมีปัญหานี้ใน Windows 7 นี่เป็นปัญหาที่เข้ากันไม่ได้และวิธีการแก้ไขมีดังนี้:

ดาวน์โหลดlibmySQL.dllไฟล์จากตัวติดตั้ง InstantRails รุ่นเก่า มันสามารถใช้ได้จากrepo InstantRails GitHub repo

จากนั้นคัดลอกไฟล์นั้นลงในโฟลเดอร์ Ruby / bin ของคุณ

ตอนนี้คุณสบายดี;)


1
การบริหารทรัพยากรมนุษย์ :( ฉันพยายามนี้ แต่ยังคงได้รับข้อผิดพลาดที่นั่นเมื่อพยายามที่จะวิ่งbundle install.
aakoch

3

ฉันได้รับข้อผิดพลาดนี้ด้วย แก้ไขได้โดยการติดตั้งแพคเกจการพัฒนา ฉันใช้ซุ้มประตูและเป็น:

sudo pacman -S base-devel

ซึ่งติดตั้ง:

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

แต่ฉันคิดว่ามันจำเป็นต้องทำและจีซีซี ข้อผิดพลาดในการส่งออกพูดว่า (บนเครื่องของฉันและอื่น ๆ ):

"คุณต้องติดตั้งเครื่องมือพัฒนาก่อน"

ดังนั้นมันจึงเป็นการตัดสินใจที่ชัดเจนและช่วยได้


3

คุณต้องติดตั้งการอ้างอิงบางอย่าง

sudo apt-get install libmysql-ruby libmysqlclient-dev

3

บน Debian Stretch แพ็คเกจที่ใช้งานได้สำหรับฉันคือdefault-libmysqlclient-dev

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


3

ในกรณีของฉันสิ่งนี้ช่วย:

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

แล้ว:

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

ผลลัพธ์:

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

ดูโพสต์นี้ (คำเตือน: ภาษาญี่ปุ่นด้านใน)



2

ฉันพบข้อผิดพลาดนี้ใน mac ของฉันและพบว่าฉันต้องการอัพเกรดจาก mysql 32 บิตเป็น mysql 64 บิตเพื่อให้ข้อผิดพลาดนี้หายไป ฉันใช้ OSX 10.6 บน intel macbook pro ด้วย ruby ​​1.9.2 และ rails3.0.0

ฉันยังต้องติดตั้ง xcode เพื่อรับยูทิลิตี้ยูนิกซ์เช่น "ทำ" ที่ต้องรวบรวมอัญมณี

เมื่อเสร็จแล้วฉันสามารถเรียกใช้ gem install mysql และติดตั้ง gem mysql2 ได้โดยไม่มีข้อผิดพลาด


1

สำหรับผู้ใช้ windows: คุณตั้งค่า lib และสอดแทรกพา ธ ของ mysql ของคุณตัวอย่างเช่นหากคุณใช้ xampp คุณสามารถมีดังนี้:

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

1

โซลูชันใช้งานได้กับ Mac OS X เท่านั้น

หากคุณติดตั้ง MySQL ด้วย homebrew สิ่งที่ใช้ได้ผลสำหรับฉันคือการถอนการติดตั้ง MySQL และติดตั้ง MySQL Community Edition ผ่านเว็บไซต์ MySQL ( https://www.mysql.com/ )

หลังจากติดตั้งแล้วเพียงป้อนคำสั่งอีกครั้งgem install mysql2หรือหากจำเป็นsudo gem install mysql2หากคุณได้รับอนุญาตให้ปฏิเสธปัญหา


0

ฉันได้รับอัญมณีที่สร้างขึ้นบน 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 สร้าง gem สำเร็จแล้ว แต่มีข้อผิดพลาดสองประการในเอกสารที่ rdoc และ ri บ่น แต่ตอนนี้เมื่อฉันต้องการ 'mysql2' ฉันจะได้รับ

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

ฉันหวังว่าข้อผิดพลาดที่ฉันจะได้รับคือไม่พบ libmysqlclient.16.dylib เพราะเราพบว่าในโพสต์อื่น (ค้นหา install_name_tool)

$ PATH ของฉันมี / usr / local / mysql อยู่ (นั่นคือที่มาของฉันและไฟล์ที่สร้างอยู่) ดังนั้นฉันจึงนิ่งงันเล็กน้อย หากใครมีความคิดฉันจะตรวจสอบอีกครั้งหลังจากนอนไม่กี่ชั่วโมง



0

หลังจากที่คุณได้รับการแก้ไขปัญหา mysql-dev คุณอาจต้องลบการติดตั้ง mysql2 ที่ไม่ดี ดูอย่างระมัดระวังในข้อความหลังจากติดตั้ง $ bundle คุณอาจจะต้อง

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

จะเป็นการล้างการติดตั้ง mysql2 ที่ไม่ดีเพื่อให้การติดตั้ง $ bundle สุดท้ายสามารถสร้างสิ่งที่ดีได้


0

ดาวน์โหลดรุ่นที่ถูกต้องของ mysqllib.dll จากนั้นคัดลอกไปที่ ruby ​​bin ใช้งานได้จริงสำหรับฉัน คลิกที่ลิงค์นี้เพื่อวาง mysql2 gem ที่คอมไพล์ไว้ในไลบรารีของไคลเอนต์ mysql ที่ไม่ถูกต้อง


0

มี "คุณต้องติดตั้งเครื่องมือพัฒนาก่อน" ข้อผิดพลาดเมื่อพยายามติดตั้ง mysql2 gem หลังจากอัปเกรดเป็น Mac OS X Mountain LionLion ดูเหมือนว่าการอัปเกรดนี้จะลบคอมไพเลอร์บรรทัดคำสั่ง

เพื่อแก้ไข:

  • ฉันถอนการติดตั้ง Xcode เวอร์ชันเก่า (รันสคริปต์ถอนการติดตั้งใน / Developer / Library) จากนั้นลบไดเรกทอรี / Developer
  • ไปที่ AppStore และดาวน์โหลด Xcode
  • เปิดตัว Xcode และเข้าไปในการตั้งค่า -> ดาวน์โหลดและติดตั้งเครื่องมือบรรทัดคำสั่ง

0

คุณได้รับปัญหานี้เนื่องจากคุณไม่ได้ติดตั้ง MySql ก่อนติดตั้ง mysql2 gem ติดตั้ง MySQL หลังจากนั้น mysql2 gem จะทำการติดตั้ง


0

ฉันแค่ต้องการเพิ่มคำตอบนี้สำหรับผู้ใช้ 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.

ดังนั้นตามที่แนะนำในโพสต์นี้ฉันลอง 'ชงติดตั้ง 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และพิมพ์ 'ตกลง' ในตอนท้าย คุณต้องรูทเพื่อยอมรับใบอนุญาต

หลังจากนี้ฉันลองติดตั้งมัดอีกครั้งและทุกอย่างก็ทำงานได้ตามปกติ [ถึงแม้ว่าจะมีการอัพเดท xcode นี้ฉันก็มีปัญหากับหอคอยของฉันด้วย]


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.