使用mysql2 Ruby gem确定mysql2服务器版本

9

我正在使用 Railsmysql2 gem。是否有一种方法可以获取 mysqld 服务器版本,就像运行以下命令一样:

$ mysqld --version
mysqld  Ver 5.5.29 for osx10.8 on i386 (Source distribution)

我不希望执行shell命令,因为数据库服务器可能在另一台服务器上运行。

2个回答

13

你可以通过 ActiveRecord::Base.connection 在 Rails 中获取版本信息。我在这里在我的 Rails 控制台中执行此操作。我使用的是一个旧版 (2.2) 的 Rails,因此语法可能与你的不同。

irb(main):001:0> ActiveRecord::Base.connection.select_rows(
                   "SHOW VARIABLES LIKE '%version%'"
                 )
=> [
    ["innodb_version", "5.5.34"],
    ["protocol_version", "10"],
    ["slave_type_conversions", ""],
    ["version", "5.5.34-0ubuntu0.12.04.1"],
    ["version_comment", "(Ubuntu)"],
    ["version_compile_machine", "x86_64"],
    ["version_compile_os", "debian-linux-gnu"]
   ]

一旦你拥有了这个,你可以提取你想要的信息,例如:

version = ActiveRecord::Base.connection
                            .select_rows("SHOW VARIABLES LIKE 'version'")
                            .last.last
=> "5.5.34-0ubuntu0.12.04.1"

好主意... 谢谢! :-) - Abdo

1
def mysql_version
  mysql_version_sql = 'SHOW VARIABLES WHERE Variable_name = "version"'
  ActiveRecord::Base.connection.select_rows(mysql_version_sql)[0][1]
end

mysql_version #=> "5.5.35-0+wheezy1"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接