2014-02-21 92 views
2

我使用Railsmysql2寶石。有沒有辦法讓mysqld服務器版本運行以下命令:使用mysql2確定mysql2服務器版本Ruby寶石

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

我不希望執行一個shell命令,因爲數據庫服務器可能在另一臺服務器上運行。

回答

2

您可以通過ActiveRecord :: Base.connection在rails中獲取版本信息。我在我的軌道控制檯中這樣做。我使用的是rails的舊版本(2.2),因此在你的語法中可能會有所不同。

irb(main):190: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%'").detect{|field,val| field == "version"}.last 
=> "5.5.34-0ubuntu0.12.04.1" 
+0

好主意...謝謝! :-) – 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"