获取MySql数据库大小



我想知道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查询并在我的生产DB上手动运行它,我得到正确的值。为什么我不能通过生产中的应用程序来实现呢?

任何想法吗?

我添加了更多的日志,这有助于我确定问题问题,我正在使用:Rails.configuration.database_configuration [Rails.env]["数据库")当我在生产中返回一个空字符串,而不是在任何其他环境,我想这是因为在我的数据库。这里有一个链接生产下的开发设置(是什么使生产设置成为和开发者一样)。无论如何,因为我不想改变我的数据库。我刚刚更改了我获取数据库名称的方式。现在效果很好。

我敢打赌这是生产中的权限问题。登录到您的生产服务器并启动db控制台(进入您的rails目录并键入rails db以确保您使用的用户与您的应用程序相同),并尝试从information_schema数据库中的表中进行选择。

你在生产中使用的mysql帐户很可能没有访问你想要在information_schema数据库中的记录

相关内容

  • 没有找到相关文章

最新更新