Я использую MVC framework (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;
}
Когда мое приложение вызывает эту функцию, оно возвращает следующую ошибку в моем logs:
[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
Мне было интересно, можно ли что-то подобное сделать, чтобы найти размер таблицы.