安装mysql2时出错:无法构建gem原生扩展

spa*_*key 472 ruby mysql rubygems ruby-on-rails mysql2

我在尝试mysql2为Rails 安装gem 时遇到了一些问题.当我尝试通过运行安装它bundle installgem install mysql2它给我以下错误:

安装mysql2时出错:错误:无法构建gem原生扩展.

我该如何修复并成功安装mysql2

spa*_*key 901

在Ubuntu/Debian和其他使用aptitude的发行版上:

sudo apt-get install libmysql-ruby libmysqlclient-dev
Run Code Online (Sandbox Code Playgroud)

libmysql-ruby已被淘汰并取而代之ruby-mysql.是我找到解决方案的地方.

如果由于libmysql-ruby找不到上述命令不起作用,则以下命令就足够了:

sudo apt-get install libmysqlclient-dev
Run Code Online (Sandbox Code Playgroud)

在Red Hat/CentOS和其他使用yum的发行版上:

sudo yum install mysql-devel
Run Code Online (Sandbox Code Playgroud)

在Mac OS X上使用Homebrew:

brew install mysql
Run Code Online (Sandbox Code Playgroud)

  • 您好,我正在使用Ubuntu 12.04和Ruby 1.9.3以及Rails 3.2.8,在我的例子中,安装`libmysqlclient-dev`就足够了. (37认同)
  • 我在Windows 7上有同样的问题..任何想法?上面的命令对我没有用.. (5认同)
  • 如果您使用的是Mac OSX:请更新到最新版本的XCode并安装开发工具.我有相同的mysql安装问题(即使使用--with-mysql-config =/usr/local/mysql/bin/mysql_config) (2认同)
  • 因为我通过RVM安装了Ruby,所以不需要libmysql-ruby (2认同)
  • 对于 Windows,请尝试 /sf/ask/1330988221/#19023107 中的勾选答案 (2认同)

Kel*_*sin 60

我在Mac上并使用自制软件来安装开源程序.我确实需要安装mac Dev工具才能安装自制软件,但之后这很简单:

brew install mysql
Run Code Online (Sandbox Code Playgroud)

安装mysql.我从没有过mysql gem问题.

  • 这样做之后我才会收到错误.当我做gem我mysql2时,我应该通过一些选项吗? (3认同)
  • 如果这没有帮助,请尝试`brew link mysql --force`. (3认同)

Fra*_*ois 34

这是Windows用户的解决方案,希望它有所帮助!

在Windows上使用MySQL和Rails 3

  • 安装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配置
: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"'

现在gem应该已经正确安装

最后复制libmysql.dll文件
C:\ Program Files\MySQL\MySQL Server 5.5\lib

C:\ Rails\Ruby1.9.2\bin

---安装mysql2宝石---


如果您不确定如何使用MySQL读取创建Rails 3应用程序,您现在可以将您的Rails应用程序与MySQL一起使用...


---使用MySQL获取Rails 3应用程序---

打开命令提示符(不是Git Bash) - > start/cmd
导航到您的文件夹(c:\ Sites)
创建新的rails应用程序

rails new world
Run Code Online (Sandbox Code Playgroud)

删除文件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
Run Code Online (Sandbox Code Playgroud)



编辑文件c:\ Sites\world\app\models\city.rb,如下所示

class City < ActiveRecord::Base
 set_table_name "city"
end
Run Code Online (Sandbox Code Playgroud)

编辑文件c:\ Sites\world\config\database.yml看起来像这样

development:
adapter: mysql2
encoding: utf8
database: world
pool: 5
username: root
password: root
socket: /tmp/mysql.sock
Run Code Online (Sandbox Code Playgroud)

添加到gemfile

gem 'mysql2'
Run Code Online (Sandbox Code Playgroud)

打开命令提示符 windows cmd,而不是Git Bash(运行你的应用程序!)
导航到你的app文件夹(c:\ Sites\world)

rails s
Run Code Online (Sandbox Code Playgroud)

在这里打开浏览器 - > http:// localhost:3000

---获取与MySQL一起使用的Rails 3应用程序---

  • 使用XAMPP:`gem install mysql2 - --with-mysql-dir = C:\ xampp\mysql` (3认同)

Off*_*eYA 20

我有几台计算机,32位和64位处理器,它们运行在Ubuntu Linux,Maverick(10.10)版本上.

我有同样的问题,对我来说, sudo apt-get install libmysql-ruby libmysqlclient-dev 做了这个工作!


aru*_*noc 16

MacOS用户的另一种方式

如果您使用"brew"来安装mysql:

gem install mysql2 -v 'x.x.x' -- --with-mysql-config=/usr/local/Cellar/mysql/y.y.y/bin/mysql_config
Run Code Online (Sandbox Code Playgroud)

xxx =你要安装的mysql2 gem
的版本yyy =你已经安装的mysql版本ls /usr/local/Cellar/mysql找到它.


Paa*_*Yaw 14

在 Ubuntu(18.04) 上

我能够通过运行以下命令来解决这个问题:

sudo apt-get install build-essential libmysqlclient-dev
gem install mysql2
Run Code Online (Sandbox Code Playgroud)

参考

  • 在 Ubuntu 20.04 上对我有用的东西 (4认同)

Joã*_*ira 7

你尝试过使用过吗?

 gem install mysql -- --with-mysql-lib=/usr/lib/mysql/lib 
Run Code Online (Sandbox Code Playgroud)

指定base目录的位置以及完成gem安装所需的MySQL库的路径?

来源: MySQL Gem安装错误:无法构建gem原生扩展 MySQL论坛:: Ruby ::帮助安装MySQL绑定Ruby


Mar*_*ear 7

如果您正在使用yum尝试:

sudo yum install mysql-devel
Run Code Online (Sandbox Code Playgroud)


All*_*len 7

对于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


Ali*_*ani 6

在 Debian Stretch 上,对我有用的软件包是default-libmysqlclient-dev

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


Car*_*lla 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
Run Code Online (Sandbox Code Playgroud)


cap*_*apu 5

如果你还有麻烦......

尝试安装

   sudo apt-get install ruby1.9.1-dev
Run Code Online (Sandbox Code Playgroud)


Nob*_*ita 5

就我而言,这有帮助:

$ export LDFLAGS="-L/usr/local/opt/openssl/lib"
$ export CPPFLAGS="-I/usr/local/opt/openssl/include"
Run Code Online (Sandbox Code Playgroud)

然后:

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
Run Code Online (Sandbox Code Playgroud)

结果:

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
Run Code Online (Sandbox Code Playgroud)

请参阅这篇文章(警告:里面有日语)。