2
我使用Rails
和mysql2
寶石。有沒有辦法讓mysqld服務器版本運行以下命令:使用mysql2確定mysql2服務器版本Ruby寶石
$ mysqld --version
mysqld Ver 5.5.29 for osx10.8 on i386 (Source distribution)
我不希望執行一個shell命令,因爲數據庫服務器可能在另一臺服務器上運行。
我使用Rails
和mysql2
寶石。有沒有辦法讓mysqld服務器版本運行以下命令:使用mysql2確定mysql2服務器版本Ruby寶石
$ mysqld --version
mysqld Ver 5.5.29 for osx10.8 on i386 (Source distribution)
我不希望執行一個shell命令,因爲數據庫服務器可能在另一臺服務器上運行。
您可以通過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"
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"
好主意...謝謝! :-) – Abdo