Crear una Web con Joomla › Foros › Joomla! 3.0 › Componentes Joomla 3.0 › Configurando postgresql en Joomla
Etiquetado: configuration, joomla, pgsql, php, postgresql
- Este debate tiene 1 respuesta, 1 mensaje y ha sido actualizado por última vez el hace 7 meses por
lauradp888.
- AutorEntradas
-
-
02/09/2022 a las 11:03 #154002
lauradp888
ParticipanteHola, estoy intentando migrar una web de Joomla con Mysqli de un servidor a otro pero pasando esa MySqli a PostgreSQL. Ya he hecho la exportación de la MySQL a la PostgreSQL y solo me queda adaptar el archivo ‘configuration.php’ de mi sitio a la nueva base de datos de PostgreSQL. ¿Alguien puede ayudarme?
Con PostgreSQL entra en juego el puerto necesario para el string de conexión y también definir el esquema a conectarse (en caso de no ser ‘public’ el que viene por defecto, como es mi caso).
Estas son las variables a cumplimentar para la config de la BBDD pero no logro que funcione. ¿donde pongo el puerto y el esquema al que conectarse? no veo ninguna variable para el puerto ni para el esquema
public $dbtype = ‘postgresql’;
public $host = ‘host_name’ ; // (en mi caso no es localhost ya que se trata de una BD externa)
public $user = ‘user’;
public $password = ‘pass’;
public $db = ‘db’;
public $dbprefix = ‘prefix’;Rellenando la configuracion de mi sitio tengo siempre este error: Error displaying the error page: Application Instantiation Error: Error connecting to PGSQL database.
Estoy convencida de que me falta alguna variable para la correcta conexión con PostgreSQL
- 02/09/2022 a las 12:19 #154003
lauradp888
ParticipanteHe encontrado como indicar el puerto para realizar la conexión correctamente. Se hace en la clase JDatabaseDriverPostgresql desde el archivo de configuracion postgresql.php ubicado en sitio_web/libraries/joomla/database/driver/postgresql.php
Desde ahí, en la función ‘connect’ incluyes en el string de conexión la variable del puerto. De este modo:
$dsn = “host={$this->options[‘host’]} dbname={$this->options[‘database’]} user={$this->options[‘user’]} password={$this->options[‘password’]} port={$this->options[‘port’]}”;
Debes declarar dentro del constructor en el objeto ‘options’ el campo port
public function __construct( $options )
{
$options[‘host’] = (isset($options[‘host’])) ? $options[‘host’] : ‘localhost’;
$options[‘port’] = (isset($options[‘port’])) ? $options[‘port’] : ”;
$options[‘user’] = (isset($options[‘user’])) ? $options[‘user’] : ”;
$options[‘password’] = (isset($options[‘password’])) ? $options[‘password’] : ”;
$options[‘database’] = (isset($options[‘database’])) ? $options[‘database’] : ”;// Finalize initialization
parent::__construct($options);
}Y desde el archivo configuration.php del directorio raiz del sitio_web incluir esta variable
public $port = ‘1234’;Con esto, la conexión se realiza correctamente. Los errores que tengo ahora son relacionados con el modo de llamar a las tablas en las queries. Al ser postgreSQL las consultas deben ser del tipo
SELECE * FROM nombre_esquema.nombre_tabla WHERE …¿Hay algún modo de indicar el nombre del esquema a nivel de configuración en lugar de editarlo en las querys?
No logro encontrar los scripts con las querys entre los directorios de joomla.Muchas gracias,
-
- AutorEntradas
- Debes estar registrado para responder a este debate.