394 Stimmen

PDOException "konnte keinen Treiber finden"

Ich habe gerade Debian Lenny mit Apache, MySQL und PHP installiert und erhalte eine PDOException could not find driver .

Dies ist die spezifische Codezeile, auf die er sich bezieht:

$dbh = new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_NAME, DB_USER, DB_PASS)

DB_HOST , DB_NAME , DB_USER y DB_PASS sind Konstanten, die ich definiert habe. Auf dem Produktionsserver (und auf meinem früheren Ubuntu-Server) funktioniert es gut.

Hat das etwas mit meiner PHP-Installation zu tun?

Die Suche im Internet hat nicht geholfen, ich finde nur den Austausch von Experten und Beispiele, aber keine Lösungen.

2voto

Das Problem ist eine fehlende php to mysql Bibliothek. In CentOs habe ich das Problem durch Ausführen von # yum install php-mysql und dann einen Neustart von apache mit # /bin/systemctl restart httpd.service Beachten Sie, dass die Namensgebung etwas anders ist als bei debian/ubuntu-basierten Distributionen: php->php5 und httpd->apache2.

1voto

Joe Punkte 35

Nur noch eine Sache, die zu bestätigen ist, da einige Leute Beispielcode aus dem Internet kopieren und einfügen, um loszulegen. Vergewissern Sie sich, dass Sie hier MySQL eingegeben haben:

... $dbh = new PDO ("mysql: ...  

In einigen Beispielen zeigt dies

$dbh = new PDO ("dblib ...

1voto

Roshimon Punkte 1798

Ich hatte das gleiche Problem, nachdem ich das php5-Paket (das auch alle Treiber enthält) entfernt hatte, um das php7-Paket zu installieren. Ich habe das php7-Paket tatsächlich ohne ein mysql-Modul installiert.

Ich konnte das Problem lösen, indem ich in das Terminal eingegeben habe:

1) $ apt-cache search php7 das alle Module auflistet, und die gefundenen Module durchsucht,

php7.0-mysql - MySQL-Modul für PHP

2) $ sudo apt-get install php7.0-mysql

Das war's. Bei mir hat es auf meinem Linux-System funktioniert.

(verwenden Sie die entsprechende php-Version, Ihre könnte php5 sein)

1voto

aneth101 Punkte 419

Für diejenigen, die Symfony2/3 verwenden und sich fragen, warum sie diesen Fehler erhalten. Wenn Sie "mapping_types" verwenden, kann dieser Fehler auftreten. Der Grund ist, dass "mapping_types" auf der falschen Ebene platziert ist. Zum Beispiel :

doctrine:
  dbal:
    mapping_types:
        set: string

Dieses "mapping_types" muss auf dieser Ebene platziert werden:

doctrine:
dbal:
    #To counter the error caused by 'mapping_types'
    connections:
        default:
            server_version: %database_server_version%
            mapping_types:
                set: string

Ich hoffe, das hilft

Ich habe die Lösung hier gefunden: https://github.com/doctrine/DoctrineBundle/issues/327

1voto

Persianuser Punkte 27
$DB_TYPE = 'mysql'; //Type of database<br>
$DB_HOST = 'localhost'; //Host name<br>
$DB_USER = 'root'; //Host Username<br>
$DB_PASS = ''; //Host Password<br>
$DB_NAME = 'database_name'; //Database name<br><br>

$dbh = new PDO("$DB_TYPE:host=$DB_HOST; dbname=$DB_NAME;", $DB_USER, $DB_PASS); // PDO Connection

Das hat bei mir funktioniert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X