我刚刚安装了Debian Lenny与Apache, MySQL和PHP,我收到一个PDOException无法找到驱动程序。

这是它所引用的特定代码行:

$dbh = new PDO('mysql:host=')。DB_HOST。”;dbname = '。Db_name, db_user, db_pass)

DB_HOST、DB_NAME、DB_USER和DB_PASS是我已经定义的常量。它在生产服务器(以及我之前的Ubuntu server设置)上运行良好。

这与我的PHP安装有关吗?

在网上搜索也没有帮助,我得到的都是专家交流和例子,但没有解决方案。


当前回答

正在调用不正确的PHP安装

我也遇到过同样的问题。我希望这能帮助到和我有类似问题的人。

场景

OS = Windows 10  
Platform = XAMPP  
PHP Version = 7 (Multiple Version seem to have been installed in the PC)  

我在公用文件夹中创建了phpinfo.php文件,并运行phpinfo()来查找我的php.ini文件的位置。

php.ini Location = c:\xampp\php\php.ini

问题 调用c:\xampp\htdocs> php -v返回php 7.2.3,但phpinfo.php显示php 7.2.2。

解决方案 而不是打电话

php artisan migrate:install   

它给了我这个错误,我用了

c:\xampp\php\php artisan migrate:install

这招奏效了。

其他回答

还有一件事需要确认,因为有些人是从互联网上复制/粘贴示例代码来开始的。确保你在这里输入了MySQL:

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

在一些例子中可以看到

$dbh = new PDO ("dblib ...

正在调用不正确的PHP安装

我也遇到过同样的问题。我希望这能帮助到和我有类似问题的人。

场景

OS = Windows 10  
Platform = XAMPP  
PHP Version = 7 (Multiple Version seem to have been installed in the PC)  

我在公用文件夹中创建了phpinfo.php文件,并运行phpinfo()来查找我的php.ini文件的位置。

php.ini Location = c:\xampp\php\php.ini

问题 调用c:\xampp\htdocs> php -v返回php 7.2.3,但phpinfo.php显示php 7.2.2。

解决方案 而不是打电话

php artisan migrate:install   

它给了我这个错误,我用了

c:\xampp\php\php artisan migrate:install

这招奏效了。

对于那些使用Symfony2/3并想知道为什么会得到这个错误的人。如果您正在使用“mapping_types”,则可能会遇到此错误。原因是“mapping_types”被放在了错误的级别。例如:

doctrine:
  dbal:
    mapping_types:
        set: string

这个“mapping_types”必须放在这个级别:

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

我希望这对你们有帮助

我在这里找到了解决方案:https://github.com/doctrine/DoctrineBundle/issues/327

我通过启用php_pdo_mysql解决了这个问题。“IIS信息服务- > PHP扩展”中的ddl。

$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

这对我很管用。