Archivos de Tags: 9.2 @es

Arreglar ‘ERROR: column “spclocation” does not exist’ en phpPgAdmin

Iba a crear una nueva base de datos desde phpPgAdmin y me pareció este error:

ERROR:  column "spclocation" does not exist
LINE 1: ...pg_catalog.pg_get_userbyid(spcowner) AS spcowner, spclocatio...
                                                             ^

php-postgresql

Para solucionarlo hay que añadir un poco de código a phpPgAdmin. En mi caso funcionó para las versiones phpPgAdmin 5.0.4 y PostgreSQL 9.3 pero si tienes por ejemplo PostgreSQL 9.2 tan solo cambia el número de la versión y debería funcionar.

  1. Abre la ubicación de phpPgAdmin y entra en la carpeta /classes/database.
  2. Abre Connection.php y añade una linea case con la versión de tu PostgreSQL:
    // Detect version and choose appropriate database driver
    switch (substr($version,0,3)) {
        case '9.3': return 'Postgres93'; break;
        case '8.4': return 'Postgres'; break;
        case '8.3': return 'Postgres83'; break;
        case '8.2': return 'Postgres82'; break;
        case '8.1': return 'Postgres81'; break;
        case '8.0':
        case '7.5': return 'Postgres80'; break;
        case '7.4': return 'Postgres74'; break;
    }
  3. Copia Postgres84.php a Postgres93.php.
  4. Abre Postgres.php y copia las funciones getTablespaces y getTablespace.
  5. Abre Postgres93.php y cambia el nombre de la clase a Postgres93 y el valor de la variable $major_version a 9.3.
  6. En Postgres93.php pega las funciones que habías copiado antes dentro de la clase.
  7. Sustituye ", spclocation," por ", pg_tablespace_location(oid) as spclocation," en las 2 funciones.

Ref: http://stackoverflow.com/questions/13467949/error-on-creating-database-in-phppgadmin