我想知道我的MySQL数据库的当前大小,以获得这些数据我用下面的方法:Ruby on Rails的 - 让MySQL数据库大小
def self.calculate_total_db_size
sql = "SELECT table_schema AS 'database',
sum(data_length + index_length)/(1024 *1024) AS size
FROM information_schema.TABLES
WHERE ENGINE=('MyISAM' || 'InnoDB')
AND table_schema = '#{get_current_db_name}'"
return perform_sql_query(sql)
end
def self.get_current_db_name
return Rails.configuration.database_configuration[Rails.env]["database"]
end
def self.perform_sql_query(query)
result = []
mysql_res = ActiveRecord::Base.connection.execute(query)
mysql_res.each_hash{ |res| result << res }
return result
end
这部作品在我的开发和临时环境很好,但由于某种原因,当我在生产中运行它时,查询不会返回任何值,如果我使用MySql查询并在生产数据库上手动运行它,则会得到正确的值。为什么我不能通过生产中的应用程序来做到这一点?
有什么想法?
如果运行正确的查询,请在服务器上尝试记录查询。 – Zimbabao 2011-04-30 15:28:32
@Ran谢谢你的提示。如果其他人试图在Rails 4中这样做,我不得不将'mysql_res.each_hash {...}'更改为'mysql_res.each {...}'(它看起来像'map'也可以)。 – 2014-04-23 05:32:33