kein Zugriff auf externe postgresql Datenbank

  • Joomla 4.2.6

    lokaler Testserver (WIN10 mit Xampp)

    php 8.1.10

    DB 10.4.25-MariaDB


    Hallo,


    ich muss Daten von einer postgresql abholen und in meine J4 Installation einbringen. Postgre V14 läuft auf dem Rechner, auf dem auch Joomla läuft.


    Wenn ich mit den üblichen php Anweisungen zugreife bekomme ich die richtigen Daten

    Code
    $dbconn = pg_connect("host=localhost dbname=**** user=**** password=***")
                    or die('Verbindungsaufbau fehlgeschlagen: ' . pg_last_error());
    $query = 'SELECT * FROM dealer_vehicles';
    $result = pg_query($query) or die('Abfrage fehlgeschlagen: ' . pg_last_error());

    Wenn ich aber versuche mit der folgenden Joomla-Syntax zu zugreifen,

    bekomme ich mit var_dump($this->items) immer dieses Ergebnis:

    bool(false)


    Was mache ich falsch?


    Habe festgestellt, dass

    Code
    $dbt = JDatabaseDriver::getInstance($option);

    in J4 deprecated ist. Aber

    Code
    $dbt = (new Joomla\Database\DatabaseFactory)->getDriver('pgsql', $option);

    funktioniert auch nicht.

    Viele Grüße aus der sonnigen Pfalz


    Alexander

    Einmal editiert, zuletzt von Indigo66 () aus folgendem Grund: Ein Beitrag von axl-g mit diesem Beitrag zusammengefügt.

  • Anscheinend kann ich gar nicht auf externe Datenbanken zugreifen. Ich habe eine weitere lokale Installation vorgenommen und versuche auf eine Tabelle in dieser zweiten Installation zu zu greifen. Ich bekomme aus einer strukturell identischen Tabelle, aber keine Daten aus Installation zwei, ebenfalls mysqli, sondern immer aus Installation 1.

    Ich hoffe, ich habe es einigermassen verständlich ausgedrückt.


    Ich habe schon versucht die bestehende Datenbankverbindung zu schließen mit

    $db->disconnect();

    $db->freeResult();

    $db->close();

    was aber alles nur zu Fehlermeldungen geführt hat (Call to a member function close() on null).

    Viele Grüße aus der sonnigen Pfalz


    Alexander

  • Wo liegt deine externe Datenbank? Bei den meisten Hostern ist der externe Zugriff nicht in Standard Paketen enthalten.

    Schau mal in den FAQs von deinem Hoster nach.

    Grüßkes datTom
    Das Leben ist zu kurz um sich zu ärgern.

  • Die Postgre liegt auf dem gleichen Rechner wie die Joomlainstallation (localhost).


    Hoster bin ich selbst, ist ja eine lokale Testinstallation.


    Den Abschnitt mit dem

    Code
    $option['driver'] = 'pgsql';
    $option['host'] = 'localhost';
    $option['port'] = '5432';
    $option['user'] = '***';
    $option['password'] = '***';
    $option['database'] = '***';
    $option['prefix'] = '';
    $dbt = JDatabaseDriver::getInstance($option);

    habe ich mittlerweile in die function __construct() verschoben.

    Beim Test mit den Zugangsdaten und dem Treiber für die zweite mysql-Datenbank funktioniert das jetzt. Der Zugriff auf die postgresql aber immer noch nicht.

    Viele Grüße aus der sonnigen Pfalz


    Alexander

  • Wenn ich

    Code
    $option['driver'] = 'pgsql';

    verwende bekomme ich keine Fehlermeldung, aber ein leeres Ergebnis. Wenn ich aber

    Code
    $option['driver'] = 'pdo_pgsql';

    verwende (nach diesem: https://docs.joomla.org/Potent…ity_issues_in_Joomla_4/de), bekomme ich die Fehlermeldung "Unable to load Database Driver: pdo_pgsql". Laut Sysinfo ist der Treiber aber enabled.


    Hat denn noch niemand mit externen PostgresDatenbanken gearbeitet?

    Viele Grüße aus der sonnigen Pfalz


    Alexander

  • Was ist denn, wenn du versucht dir eine eigene Klasse mit native PHP aus deinem ersten Post zu schreiben um zu sehen ob du aus Joomla heraus überhaupt ein connect bekommst.

    Grüßkes datTom
    Das Leben ist zu kurz um sich zu ärgern.

  • Ja.


    Code
        public function __construct($config = array()) {
        parent::__construct($config);
        $dbt = pg_connect("*ip* port=5432 dbname=*** user=*** password=***");
    etc.

    Viele Grüße aus der sonnigen Pfalz


    Alexander

  • bekomme ich die Fehlermeldung "Unable to load Database Driver: pdo_pgsql". Laut Sysinfo ist der Treiber aber enabled.

    Es gibt nur die PgsqlDriver.php. Wie uner deinem Link beschrieben, ist das automatisch einer, der, versucht pdo_sql zu verwenden, innerhalb libraries\vendor\joomla\database\src\Pdo\PdoDriver.php.

    Code
    class PgsqlDriver extends PdoDriver

    Du könntest versuchen, das auf https://github.com/joomla/joomla-cms/issues einzureichen. Gelegentlich finden sich da Leute, die auch erklären, wenn sie der Meinung sind, es sei kein Bug. Und auch der eine oder andere, der Postgresql verwendet.

    Garantien gibt es aber keine, dass die ANtwort nicht ist "Ask in a froum" ;)