在我的 Rails 项目中使用 MariaDB 而不是 MySQL

Posted

技术标签:

【中文标题】在我的 Rails 项目中使用 MariaDB 而不是 MySQL【英文标题】:Use MariaDB instead of MySQL in my Rails project 【发布时间】:2013-04-24 15:13:14 【问题描述】:

如何?

当我尝试安装 mysql2 gem 时返回错误,因为找不到 mysqlclient。

这里有一些 solution,但我没有在我的 openSUSE 12.3 上找到任何 libmariadbd-dev 包。

【问题讨论】:

您应该将您的解决方案作为答案,然后选择它作为接受的答案。目前,这个问题在统计数据中显示为未回答。 【参考方案1】:

虽然安装 libmariadbd-dev 包是最简单的方法,但在某些操作系统或包管理器中它不可用。

例如,在带有自制软件的 Mac 上,这是不可用的。 不过我找到了解决方法。

要在 Mac 上安装 gem mysql2,您需要在 homebrew 中使用 mariadb-connector-c。 这个包与 Mariadb 符号链接冲突,所以你需要这样做:

brew unlink mariadb

brew install mariadb-connector-c

cd into the rails project directory

bundle install (or gem install mysql2)

brew uninstall mariadb-connector-c

brew link mariadb

【讨论】:

【参考方案2】:

从 Rails 5(目前仍处于测试阶段)开始,正式支持 MariaDB,我认为这应该可以简化实施。虽然我自己没试过。

您可以在 Rails 博客上的博文中了解它:

http://weblog.rubyonrails.org/2016/4/16/this-week-in-rails-mariadb-action-cable-and-more/

【讨论】:

【参考方案3】:

Ubuntu 14.04.3 LTS 我可以用sudo apt-get install libmariadbd-dev 安装

我跟着 https://mariadb.com/kb/en/mariadb/installing-mariadb-deb-files/ 安装了 MariaDB,它为 maria db 添加了 apt 存储库。

【讨论】:

【参考方案4】:

openSUSE 似乎没有 MariaDB 客户端开发包。您必须安装 libmysqlclient-devel 软件包。由于 MariaDB 被标记为 MySQL 的替代品,它必须支持 MySQL 客户端,尽管您可能会失去一些 MariaDB 的改进。

似乎 mysql2 gem 应该与 MariaDB 客户端库一起使用。其他选项希望 mariadb-client 包就足够了,为这些库找到一个 3rd 方包或自己安装它们。

更新 现在有一个MariaDB repository for openSUSE。它包括一个开发包和非常好的说明。将以下内容放在 /etc/zypp/repos.d/ 下的文件中

# MariaDB 10.1 openSUSE repository list - created 2015-10-20 16:37 UTC
# http://mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/opensuse13-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

现在你可以运行zypper install MariaDB-client MariaDB-devel


您的问题与 Ubuntu 无关,但我敢肯定,很多人在谷歌上搜索 Ubuntu(或其衍生产品,如 Mint)将登陆此页面。在 Ubuntu 中,您必须使用 MariaDB Foundation's ppa 安装所有软件包,但它们包含所有开发库并支持 5.5、10.0 和 10.1 版本。然后就可以安装mariadb-servermariadb-clientlibmariadbclient-devlibmariadbclient-dev:i386等包(32位客户端)。

网站上的说明简单而详细。例如,在 Ubuntu 14.04 中仅安装 10.1 开发库

sudo apt-get install software-properties-common
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
sudo add-apt-repository 'deb http://mirrors.syringanetworks.net/mariadb/repo/10.1/ubuntu trusty main'
sudo apt-get update
sudo apt-get install libmariadbclient-dev

【讨论】:

【参考方案5】:

对于最近的 ubuntu 15.04 livingDebian 8.0 Jessie

无需从 ppa 安装(包括 mariadb-server),但您必须安装 libmariadb-client-lgpl-devlibmariadb-client-lgpl-dev-compat 并将 gem 配置为使用 mariadb_config

apt-get install mariadb-server libmariadb-client-lgpl-dev libmariadb-client-lgpl-dev-compat

gem install mysql2 -- --with-mysql-config=/usr/bin/mariadb_config

# or for bundler
bundle config build.mysql2 --with-mysql-config=/usr/bin/mariadb_config
bundle install

【讨论】:

同样适用于 Debian 8.0 Jessie。 libmariadb-client-lgpl-dev-compat 应该有一个 mariadb_config 的符号链接。【参考方案6】:

您可能遇到了与 mariadb_config 相关的错误。像

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    /home/dev/.rbenv/versions/2.1.5/bin/ruby extconf.rb --with-mysql-config=/usr/bin/mariadb_config
checking for ruby/thread.h... yes
checking for rb_thread_call_without_gvl() in ruby/thread.h... yes
checking for rb_thread_blocking_region()... yes
checking for rb_wait_for_single_fd()... yes
checking for rb_hash_dup()... yes
checking for rb_intern3()... yes
-----
Cannot find mysql_config at /usr/bin/mariadb_config
-----
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details. 

你只需要进入 /usr/bin 目录并运行这个命令

sudo ln -nfs mysql_config mariadb_config

这将解决您的问题。

【讨论】:

【参考方案7】:

在 linux mint 上,我能够安装:

sudo aptitude install libmariadbclient-dev:i386 libmariadbclient-dev

【讨论】:

以上是关于在我的 Rails 项目中使用 MariaDB 而不是 MySQL的主要内容,如果未能解决你的问题,请参考以下文章

Ruby on Rails - 在我的项目中使用Themeforest Admin主题

使用 Capistrano 部署 Rails 5.1 / Webpacker 应用程序

Rails在我的redis缓存中添加额外的行

方法“is_admin”在哪里?在我的 Rails 应用程序中定义?

为啥 datatables.net 在我的 Rails 开发环境中可以工作,但在部署到 Heroku 时却不行?

我想在我的 chromebook mariadb 中下载,我正在使用 archlinux,但安装后遇到此错误