【发布时间】:2020-04-22 18:36:02
【问题描述】:
我正在为我的应用程序使用 MVC 框架 (Zend),我想在 PostgreSQL 中找到一个表的总大小(包括索引)。表名是 "V5TableName" - 包括引号,因为表名区分大小写。我已确保不涉及任何拼写错误。
我获取表格大小的代码如下所示:
public function getMyTableSize()
{
$sql = "SELECT pg_size_pretty(pg_total_relation_size( '\"V5TableName\"' ) );";
/* Custom_Db is a custom library in my application which makes the PostgreSQL connection
and queries the database
*/
$tableSize = Custom_Db::query($sql)->fetchColumn();
return $tableSize;
}
当我的应用程序调用此函数时,它会在我的日志中返回以下错误:
[22-Apr-2020 09:42:37] PID:30849 ERR: SQLSTATE[42P01]: Undefined table: 7 ERROR: relation "V5TableName" does not exist LINE 1: SELECT pg_size_pretty(pg_total_relation_size( '"V5TableName... ^ query was: SELECT pg_size_pretty(pg_total_relation_size( '"V5TableName"' ) );
如果我在 pgAdmin4 中运行相同的查询,它返回表大小(例如:104Mb)非常好。
我试过了:
- 在代码中删除和添加表名的引号。
- 将架构作为前缀附加到表名(例如:
'public."V5TableName"')。
以上方法似乎都不起作用。我不确定这里出了什么问题。
我还尝试在我的应用程序中查找总数据库大小(数据库名称:MyDbName - 混合大小写),我的查询如下所示:
$sql = "SELECT pg_size_pretty(pg_database_size('MyDbName'))"; // this DID NOT WORK
所以我把它改成如下所示的:(它工作)
$sql = "SELECT pg_size_pretty(pg_database_size( current_database() ))"; // this WORKED
我想知道是否有类似的方法可以找到表格大小。
【问题讨论】:
标签: php postgresql zend-framework zend-db pgadmin-4