Ich versuche, über Laravel eine Verbindung mit der PostgreSQL-Datenbank herzustellen, um eine PHP-Handwerker-Migration durchzuführen, aber es scheint keine Anweisung zu geben, da der Datenbankname von MySQL gelesen wird.
Hier sind die Befehle aus 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.
BEARBEITEN: Wenn ich versuche, PHP Artisan zu migrieren, erhalte ich eine 'PDOException: Treiber konnte nicht gefunden werden'. Ich benutze WAMP und bin in Win8.1. Verwendung von PostgreSQL als Datenbank.
EDIT: Habe eine Reihe alternativer Lösungen ausprobiert, aber ich sollte dies trotzdem lösen. Die
php.ini
Datei wurde in Apache, WAMP (aus dem PHP-Ordner) und PostgreSQL überprüft. Das extension_dir
ist richtig wie es ist ->extension_dir = "c:/wamp/bin/php/php5.5.12/ext/"
Die extension=pdo_pgsql.dll
und extension=pgsql.dll
sind unkommentiert.
Den PATH
Trick in den 'Systemvariablen' ausgeführt und neu gestartet. Keine Chance.
Danke für die bisherige Hilfe.
Das sind meine Fahrer php_pdo_driver.h
& php_pdo.h
vonC:\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" "- ohne-pdo-mssql "" - ohne-pi3web "" - mit-pdo-oci = C: \ php-sdk \ oracle \ x64 \ instantclient10 \ sdk, geteilt "" - mit-oci8 = C: \ php -sdk \ oracle \ x64 \ instantclient10 \ sdk, freigegeben "" --with-oci8-11g = C: \ php-sdk \ oracle \ x64 \ instantclient11 \ sdk, freigegeben "" --enable-object-out-dir = ../obj/ "" --enable-com-dotnet = shared "" --with-mcrypt = static "" --disable-static-analyse "" --with-pgo "
quelle
Antworten:
Stellen Sie sicher, dass Sie den
'default'
Schlüssel konfigurierenapp/config/database.php
Für Postgres wäre dies
'default' => 'postgres',
Wenn Sie eine
[PDOException] could not find driver
Fehlermeldung erhalten, überprüfen Sie, ob Sie die richtigen PHP-Erweiterungen installiert haben. Sie benötigenpdo_pgsql.so
undpgsql.so
installiert und aktiviert. Die Anweisungen dazu variieren zwischen den Betriebssystemen.Für Windows sollten die
pgsql
Erweiterungen mit der offiziellen PHP-Distribution vorab heruntergeladen werden. Bearbeiten Sie einfach Ihrephp.ini
und kommentieren Sie die Zeilenextension=pdo_pgsql.so
und ausextension=pgsql.so
Auch in
php.ini
, stellen Sie sicher ,extension_dir
wird auf das richtige Verzeichnis. Es soll ein Ordner mit dem Namen seinextensions
oderext
in Ihrem PHP - Installationsverzeichnis oder ähnliches.Kopieren Sie schließlich
libpq.dll
ausC:\wamp\bin\php\php5.*\
inC:\wamp\bin\apache*\bin
und starten Sie alle Dienste über die WampServer Schnittstelle.Wenn Sie immer noch die Ausnahme erhalten, müssen Sie möglicherweise das postgres-
\bin
Verzeichnis zu IhremPATH
:PATH
Eintrag.Dies sollte hoffentlich alle Probleme lösen. Weitere Informationen finden Sie unter:
quelle
extension=php_pdo.dll
Dies ist der Haupt-PDO-Treiber, auf den sich die datenbankspezifischen DLL verlassen.extension=php_pdo.dll
in derext
noch in derphp.ini
phpinfo();
? Sie erhalten das aktuelle Erweiterungsverzeichnis und die geladene php.ini. Möglicherweise liegt ein Konflikt vor.Für
PDOException: could not find driver
fürMySQL
und wenn esDebian
auf Betriebssystem basiert,sudo apt-get -y install php5-mysql
quelle
sudo apt-get -y install php7.0-pgsql
.Für PHP 7 in Ubuntu können Sie außerdem Folgendes tun:
sudo apt-get install php7.0-pgsql
Jetzt können Sie also keine Zeilen mehr auskommentieren
php.ini
UPD: Ich habe den gleichen Fehler, daher lag das Problem nicht im Treiber. Ich habe meine geändert
database.ini
, aber jedes Mal, wenn ich einen Fehler sah. Und ich ändere die Datenbankkonfiguration.env
und Fehler sind verschwunden.quelle
sudo apt-get install php7.1-pgsql
sudo apt-get install php7.4-pgsql
Das hat bei mir funktioniert:
$ sudo apt-get install php-gd php-mysql
quelle
Ich hatte das gleiche Problem. Das hat bei mir funktioniert.
Es gibt 2 php.ini-Dateien:
HINWEIS: Dies verwendet meine Version von PHP und Apache. Ändern Sie Ihre Version.
Die Datei php.ini in beiden Ordnern muss aktualisiert werden. Die Erweiterungen:
Diese müssen Sie auskommentieren (entfernen Sie das; -Symbol).
Starten Sie sowohl Wamp als auch die Eingabeaufforderung neu.
Hoffentlich klappt es bei dir :).
quelle
Mir ist klar, dass dies eine alte Frage ist, aber ich habe sie in einer Google-Suche gefunden, also werde ich fortfahren und antworten, nur für den Fall, dass jemand anderes darauf stößt. Ich bin auf einem Mac und hatte das gleiche Problem, habe es aber 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 Dezimalpunkt verwenden.
quelle
sudo apt-get install php7.1-pgsql
quelle
Ich habe auch dieses Problem. Ich habe dieses Problem bereits gelöst. Wenn Sie Wamp verwenden, führen Sie die folgenden Schritte aus.
;extension=pdo_pgsql to extension=pdo_pgsql
Wenn es nicht funktioniert, überprüfen Sie bitte Ihre
.env
und config / database erneut.quelle
Ich hatte den gleichen Fehler auf 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 von 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
quelle
Wenn Sie Postgresql unter OpenSuse (und Co.) verwenden möchten, versuchen Sie Folgendes:
zypper --no-refresh in php5-pgsql
quelle
Nach 3 Stunden gelöst ... 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 mit einem einfachen PHP-Testcode aus dem www-Verzeichnis eine Verbindung zum PostgreSQL-Server herstellen. Aber
$ php artisan migrate
immer noch zurückgekehrtIch habe die Shell (Git Bash für Windows) überprüft
$ php --ini
, die C: \ wamp64 \ bin \ php \ php7.2.4 \ php.ini anstelle von c: \ wamp64 \ bin \ apache \ apache2.4.33 \ bin \ php.ini zurückgegeben hat , geladen von WAMP Sie müssen also die Erweiterungen pgsql und pdo_pgsql auch in C: \ wamp64 \ bin \ php \ php7.2.4 \ php.ini auskommentieren, und dann funktioniert die Migration ...quelle
In Windows 8-PCs mit Laragon 3.4.0 180809 hatte ich das gleiche Problem. In meinem Fall ist es passiert, weil ich Laragon aktualisiert und eine neue Version von PHP hinzugefügt habe. Also hatte
laragon/bin/php/
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 meinePATH
Variable hinzugefügt . In meiner Befehlskonsole zeigte das Ausführenphp --ini
jedoch, dass der Pfad tatsächlich vom älteren abgerufen wurde :php-7.1.7-Win32-VC14-x64
. Also habe ich die alte gelöscht (aus Sicherheitsgründen habe ich sie in den Papierkorb gelegt). Aber Laragon konnte danach nicht starten.Also habe
laragaon/etc/apache2/mod_php.conf
ich in den Pfad zur neuesten PHP-Version geändert. Starten Sie dann Laragon neu und das Problem ist behoben. 😊Referenz: So fügen Sie eine weitere PHP-Version hinzu - Laragon Forum
quelle
Unter Linux (Ubuntu) installieren Sie den Treiber einfach wie folgt:
sudo apt-get install php-pgsql
Dadurch wird der Treiber unter Verwendung Ihrer aktuellen PHP-Version installiert.
quelle
Alter Thread, den ich kenne, aber ich habe ein paar Stunden meines Lebens damit verloren. Sie müssen auch die DB-Informationen in der ENV-Datei festlegen. Sie müssen nicht haben , um den Treiber hier angeben , da der Standard in database.php angegeben verwendet wird (glaube ich). Ich hatte
DB_CONNECTION=mysql
Probleme, weil es in der .env-Datei war und ich pgsql verwendete.quelle
sudo apt-get -y installiere php * -mysql (führe einfach diesen Befehl aus)
quelle
Das hat bei mir funktioniert:
$ sudo apt-get -y install php5.6-pgsql $ sudo service apache2 restart
Ich arbeite mit 32bit Ubuntu 14
quelle
Ich sehe, dass Sie Windows verwenden. Ich konnte dies nicht beheben, indem ich eine der Erweiterungen aktivierte, die mit meinem Windows WAMP Server geliefert wurden. Ich habe PDO_ODBC und andere ausprobiert und sogar das Microsoft Official PDO_SQLSRV gefunden .
Die Lösung für mich bestand darin, die PDO_SQLSRV-Treiber von einer Website eines Drittanbieters zu installieren. Ich habe die Treiber über http://robsphp.blogspot.nl/2012/06/unofficial-microsoft-sql-server-driver.html gefunden
Normalerweise verwende ich keine DLLs von zufälligen Websites, aber ich war verzweifelt und das hat bei mir funktioniert. In der Hoffnung, dass dies anderen viele Stunden Frust ersparen könnte.
quelle
Die Verwendung von Laravel V 5.5.39 mit Php 7.1.12 funktioniert einwandfrei , aber spätere (neuere) PHP-Versionen verursachen das Problem. Wenn Sie also die PHP-Version ändern, erhalten Sie die Lösung zu 100% .
quelle