上次小弟才剛升級完 MariaDB 10.0 ,原本想說都沒事,網路服務都很正常,沒想到今天一重開機,Redmine 就爆了

又是 Redmine

又是 Redmine

又是 Redmine

require': Incorrect MySQL client library version! This gem was compiled for 5.5.34-MariaDB but the client library is 10.0.10-MariaDB. (RuntimeError) from /usr/local/rvm/gems/ruby-2.1.0/gems/mysql2-0.3.15/lib/mysql2.rb:8:in'

類似這樣的訊息

== 恩,好啦,其實整件事情跟 Redmine 本身是沒關係的

-clear-

那麼網路上查了一下,原來是之前安裝的 mysql2(gem) 適用於 MariaDB 5.5,由於我升到 MariaDB 10.0 ,所以我要再重新

compile mysql2 against MariaDB 10.0.10

網路上已經有相關的 issue : Error while connecting MariaDB v10.0.10

那做法上就是移除之前的 mysql2,重新 compile mysql2 並加上 –with-mysql-config 參數

# Reinstall mysql2 with Configuration options --with-mysql-config On Arch Linux

[redmine@localhost ~] gem uninstall mysql2
[redmine@localhost ~] gem install mysql2 -- --with-mysql-config=/usr/bin/mysql_config
[redmine@localhost ~] cd /path/to/redmine/project
[redmine@localhost redmine] bundle config build.mysql2 --with-mysql-config=/usr/bin/mysql_config
[redmine@localhost redmine] bundle update

Note:
bundle config build.mysql2 –with-mysql-config=/usr/bin/mysql_config

After running this command, every time bundler needs to install the mysql gem, it will pass along the flags you specified.

這樣基本上就完成了,接著執行 rake 產生 secret token

[redmine@localhost redmine]$ rake generate_secret_token

回到 sudoer 用 systemctl 重新執行 redmine ,我的 redmine 就回來囉~

[sudoer@localhost ~]$ sudo systemctl restart redmine

Note

brianmario/mysql2 :A modern, simple and very fast Mysql library for Ruby - binding to libmysql

Force re-installing the MySQL gem

BUNDLE-CONFIG

最近幫 Arch 更新時才發現 MariaDB 已經到 10.0 了,記得之前還是 MariaDB 5.5,想說是不是自己太久沒更新

但看 MariaDB 官網的 Download list ,的確是從 5.5 升到 10.0 及 10.1

MariaDB - All Releases

但為甚麼不將新版本取名為 MariaDB 5.6 而是直接跳到 MariaDB 10.0 ?

因此不小心好奇了一下,尋找它的版本命名由來,所幸找到一篇翻譯文,翻得還蠻清楚的,以下摘錄:

開源中國社區:MariaDB 10.0 和 MySQL 5.6 有何不同 原文:MariaDB 10.0 and MySQL 5.6

  1. MySQL5.6 的代码库的文件结构已经被改动了。比如单个代码文件已经被分成多个,又或者是某些代码已经被重新归类到了不同的文件内。所以要把MariaDB 去配合现在这个文件结构一定是一个非常消耗时间的过程。
  1. MairaDB 5.5 已经有大量的代码不同于MySQL 5.5 的版本,而且也有很多的新的特征被整合到MariaDB 5.5 中,而这些特征直到 5.6 版本才出现在MySQL中。所以我们在比较同样功能的MySQL 和MariaDB的版本,同时在完成设计和QA方面的审核后,一个很明显的结论是MariaDB会是一个更好的产品。

由于我们引入了一些新功能(像 multi-source replication多源复制, Cassandra integration, engine independent statistics独立统计系统等),所以我们需要搞个新版本。通常当你引入新功能时,你需要新建个版本。

下个版本称作“MariaDB5.6”是不准确的,因为他不是基于Mysql5.6,取而代之,我们决定版本号调为10.0

恩,因此簡而言之,MariaDB 並不是基於 Mysql 5.6 ,並且多了 multi-source replication, Cassandra integration, engine independent statistics 等新功能,故將版本號一口氣提升到 10.0 ,作為 MariaDB 邁入另一個里程碑的紀念(?)

那麼在 Arch 的 MariaDB 升級上面,官方要我們 restart mysqld.service 和 run mysql_upgrade

before

[user@localhost ~]$ sudo systemctl status mysqld
...
Jul 16 13:48:59 localhost mysqld[203]: Version: '5.5.37-MariaDB-log'  socket: '/run/mysqld/mysqld.sock'  ...erver

after

[user@localhost ~]$ sudo systemctl status mysqld
...
Jul 21 14:43:40 localhost mysqld[5451]: Version: '10.0.12-MariaDB-log'  socket: '/run/mysqld/mysqld.sock'...erver

Arch News : MariaDB 10.0 enters [extra] What is MariaDB 10.0?

https://www.dokuwiki.org/dokuwiki

https://wiki.archlinux.org/index.php/cacti

https://wiki.archlinux.org/index.php/BIND