it-swarm.com.de

Laravel: Fehler [PDOException]: Treiber konnte in PostgreSQL nicht gefunden werden

Ich versuche, mich über Laravel mit der PostgreSQL-Datenbank zu verbinden, um eine Php-Handwerker-Migration durchzuführen, scheint aber nicht gerichtet zu sein, da sie den Datenbanknamen von MySQL liest. 

Hier sind die Befehle von database.php:

'connections' => array(

    'sqlite' => array(
        'driver'   => 'sqlite',
        'database' => __DIR__.'/../database/production.sqlite',
        'prefix'   => '',
    ),

    'mysql' => array(
        'driver'    => 'mysql',
        'Host'      => 'localhost',
        'database'  => 'database',
        'username'  => 'root',
        'password'  => '',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ),

    'pgsql' => array(
        'driver'   => 'pgsql',
        'Host'     => 'localhost',
        'database' => 'postgres',
        'username' => 'postgres',
        'password' => 'root',
        'charset'  => 'utf8',
        'prefix'   => '',
        'schema'   => 'public',
    ),

    'sqlsrv' => array(
        'driver'   => 'sqlsrv',
        'Host'     => 'localhost',
        'database' => 'database',
        'username' => 'root',
        'password' => '',
        'prefix'   => '',
    ),

),

Wenn ich die MySQL-Pfade entferne, bekomme ich:

[InvalidArgumentException]
Database [mysql] not configured.


EDIT: Beim Versuch, eine PHP-Handwerker-Migration durchzuführen, erhalte ich eine 'PDOException: Treiber konnte nicht gefunden werden'. Ich verwende WAMP und bin in Win8.1. PostgreSQL als Datenbank verwenden.


EDIT: Ich habe eine Reihe alternativer Lösungen ausprobiert, aber ich sollte dieses Problem trotzdem lösen. Die php.ini-Datei wurde in Apache, WAMP (aus dem Ordner php) und PostgreSQL geprüft. Der extension_dir ist korrekt so wie er ist -> extension_dir = "c:/wamp/bin/php/php5.5.12/ext/"

Der extension=pdo_pgsql.dll und extension=pgsql.dll sind unkommentiert.

Machen Sie den Trick PATH in den 'System Variables' und starten Sie ihn neu. Keine Chance. 

Danke für die bisherige Hilfe.

Dies sind meine Treiber php_pdo_driver.h & php_pdo.h von C:\Program Files (x86)\PostgreSQL\EnterpriseDB-ApachePHP\php\SDK\include\ext\pdo

Informationen von phpinfo:

PHP Version 5.5.12

Compiler MSVC11 (Visual C++ 2012) Konfigurieren Sie den Befehl cscript /nologo configure.js "--enable-snapshot-build" "--disable-isapi" "--enable-debug-pack" "--without-mssql" "--without-pdo-mssql" "--without-pi3web" "--with-pdo-oci = C:\php-sdk\Oracle\x64\instantclient10\sdk, shared" "--with-oci8 = C:\php-sdk\Oracle\x64\instantclient10\sdk, shared" "--with-oci8-11g = C:\php-sdk\Oracle\x64\instantclient11\sdk, shared" "--enable-object-out-dir = ../obj /" "--enable-com-dotnet = shared" "--with-mcrypt = static" "--disable-static-analysis" "--with-pgo"

54
Hyperion

Stellen Sie sicher, dass Sie den Schlüssel 'default' in app/config/database.php konfigurieren.

Für Postgres wäre dies 'default' => 'postgres',

Wenn Sie einen [PDOException] could not find driver-Fehler erhalten, prüfen Sie, ob Sie die korrekte PHP -Erweiterung installiert haben. Sie müssen pdo_pgsql.so und pgsql.so installiert und aktiviert haben. Anweisungen dazu sind von Betriebssystem zu Betriebssystem unterschiedlich. 

Für Windows sollten die pgsql-Erweiterungen mit der offiziellen PHP -Distribution vorinstalliert sein. Bearbeiten Sie einfach Ihren php.ini und kommentieren Sie die Zeilen extension=pdo_pgsql.so und extension=pgsql.so aus.

Stellen Sie außerdem sicher, dass in php.iniextension_dir auf das richtige Verzeichnis eingestellt ist. Es sollte ein Ordner namens extensions oder ext oder ein ähnlicher Ordner im Installationsverzeichnis von PHP sein.

Kopieren Sie schließlich libpq.dll von C:\wamp\bin\php\php5.*\ in C:\wamp\bin\Apache*\bin und starten Sie alle Dienste über die WampServer-Schnittstelle neu.

Wenn Sie immer noch die Ausnahme erhalten, müssen Sie möglicherweise das Postgres-Verzeichnis \bin zu Ihrer PATH hinzufügen:

  1. Systemeigenschaften -> Registerkarte Erweitert -> Umgebungsvariablen
  2. Blättern Sie in der Gruppe "Systemvariablen" in der unteren Hälfte des Fensters durch und suchen Sie den Eintrag PATH.
  3. Wählen Sie es aus und klicken Sie auf Bearbeiten
  4. Fügen Sie am Ende des vorhandenen Eintrags den vollständigen Pfad zu Ihrem Postgres-Bin-Verzeichnis ein. Der bin-Ordner sollte sich im Stammverzeichnis Ihres postgres-Installationsverzeichnisses befinden.
  5. Starten Sie alle Eingabeaufforderungen zum Öffnen neu, oder starten Sie Ihren Computer neu.

Dies sollte hoffentlich Probleme lösen. Weitere Informationen finden Sie unter:

57
lainceline

Für PDOException: could not find driver für MySQL und wenn es Debian-basiertes Betriebssystem ist,

Sudo apt-get -y install php5-mysql
43

Für PHP 7 in Ubuntu können Sie auch Folgendes tun:

Sudo apt-get install php7.0-pgsql

So können Sie jetzt Zeilen in php.ini nicht auskommentieren

UPD: Ich habe den gleichen Fehler, also war das Problem nicht im Treiber. Ich änderte meinen database.ini, aber jedes Mal, wenn ich einen Fehler sah, __. Und ich ändere die Datenbankkonfiguration in .env und Fehler Weg.

Ich weiß, dass dies eine alte Frage ist, aber ich habe sie in einer Google-Suche gefunden. Ich werde also weitergehen und antworten, nur falls jemand anderes darüber stößt. Ich bin auf einem Mac und hatte das gleiche Problem, aber es wurde mit HomeBrew gelöst. Sobald Sie es installiert haben, können Sie einfach diesen Befehl ausführen:

brew install php56-pdo-pgsql

Und ersetzen Sie die 56 durch eine beliebige Version von PHP, die Sie ohne Dezimalzeichen verwenden.

8
Billy Brawner

Das hat für mich funktioniert:

$ Sudo apt-get install php-Gd php-mysql

7
Lucky

Ich hatte das gleiche Problem. Das hat bei mir funktioniert.

Es gibt 2 php.ini-Dateien:

  • C:\wamp\bin\Apache\apache2.4.9\bin
  • C:\wamp\bin\php\php5.5.12

ANMERKUNG: Dies ist meine Version von PHP und Apache. Ändern Sie Ihre Version.

Die Datei php.ini, die sich in den beiden Ordnern befindet, ist das, was Sie aktualisieren müssen, die Erweiterungen:

  • erweiterung = php_pdo_pgsql.dll
  • erweiterung = php_pgsql.dll

Dies ist das, was Sie zum Auskommentieren benötigen (das Symbol; entfernen).

Starten Sie Wamp und die Eingabeaufforderung neu.

Hoffentlich klappt es für Sie :).

5
user3293860
Sudo apt-get install php7.1-pgsql
4
Sujal Patel

Ich habe auch dieses Problem. Ich habe dieses Problem bereits gelöst. Wenn Sie Wamp verwenden, führen Sie die folgenden Schritte aus.

  1. Gehen Sie zu wamp64/www/bin/php/php* (wobei * die von Ihnen verwendete PHP-Version ist).
  2. Bearbeiten Sie die Datei php und entfernen Sie das Kommentarzeichen durch Entfernen des Semikolons:
;extension=pdo_pgsql to extension=pdo_pgsql
  1. Speichern Sie Ihren Wamp-Server und starten Sie ihn erneut

Wenn dies nicht funktioniert, überprüfen Sie bitte Ihren .env und die config/database erneut.

1
Phantih

In meinem Fall hatte ich zwei Versionen von PHP installiert. Also musste ich nur noch benutzen

$ /opt/lampp/bin/php artisan serve statt 

$ php artisan serve 

0
Tejas

Ich hatte den gleichen Fehler bei PHP 7.3.7 docker mit laravel:

Das funktioniert bei mir

apt-get update && apt-get install -y libpq-dev && docker-php-ext-install pdo pgsql pdo_pgsql

Dadurch werden die Treiber pgsql und pdo_pgsql installiert.

Führen Sie nun diesen Befehl aus, um die Zeilen extension = pdo_pgsql.so und extension = pgsql.so aus der Datei php.ini zu entfernen

sed -ri -e 's!;extension=pdo_pgsql!extension=pdo_pgsql!' $PHP_INI_DIR/php.ini

sed -ri -e 's!;extension=pgsql!extension=pgsql!' $PHP_INI_DIR/php.ini
0
Ash

Bei Windows 8 PC mit Laragon 3.4.0 180809 hatte ich das gleiche Problem. In meinem Fall passierte es, weil ich Laragon aktualisiert und eine neue Version von PHP hinzugefügt habe. In laragon/bin/php/ hatte ich tatsächlich zwei Verzeichnisse:

  • php-7.1.20-Win32-VC14-x64
  • php-7.1.7-Win32-VC14-x64

Ich habe 7.1.20 in meine Variable PATH eingefügt. In meiner Befehlskonsole zeigte die Ausführung von php --ini jedoch an, dass der Pfad tatsächlich von der älteren Version abgerufen wurde: php-7.1.7-Win32-VC14-x64. Also habe ich die alte gelöscht (zur Sicherheit habe ich sie in den Papierkorb gestellt). Aber Laragon konnte danach nicht starten.

Also änderte ich in laragaon/etc/Apache2/mod_php.conf den Pfad auf die neueste Version von PHP. Dann wurde Laragon neu gestartet und das Problem wurde behoben. ????

Referenz: So fügen Sie eine andere PHP -Version hinzu - Laragon Forum

0
Mayeenul Islam

Gelöst nach 3 Stunden ... Ich verwende WAMP (PHP 7.2.4), PostgreSQL 10, Laravel 5.6.29. Geladene PHP -Erweiterungen (pgsql, pdo_pgsql) von Wampserver 3.3, dann konnte ich mich mit einem einfachen PHP-Testcode aus dem Verzeichnis www mit dem PostgreSQL-Server verbinden. Aber $ php artisan migrate kam immer noch zurück 

PDOException: :( "Treiber wurde nicht gefunden")

Ich habe die Shell (git bash for windows) mit $ php --ini überprüft, das C:\wamp64\bin\php\php7.2.4\php.ini anstelle von c:\wamp64\bin\Apache\apache2.4.33\bin\php zurückgibt. ini, geladen von WAMPSo müssen Sie die Erweiterungen pgsql und pdo_pgsql auch in C:\wamp64\bin\php\php7.2.4\php.ini dekommentieren und dann funktioniert die Migration ...

Ich war auf Shared Hosting und da musste ich alle pdo aktivieren 

 Like this image shows

0
Black Mamba

Wenn Sie Postgresql für OpenSuse (und co) verwenden möchten, versuchen Sie Folgendes:

zypper --no-refresh in php5-pgsql
0
nemesisfixx

Alter Faden, den ich kenne, aber ich habe damit ein paar Stunden meines Lebens verloren. Sie müssen auch die DB-Informationen in der .env-Datei festlegen. Sie haben nicht have , um den Treiber hier anzugeben, da der in database.php angegebene Standard verwendet wird (denke ich). Ich hatte Probleme, weil es DB_CONNECTION=mysql in der .env-Datei hatte und ich pgsql verwendete.

0
Mark D