我刚刚安装了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 -m | grep pdo_mysql。

如果没有,对于PHP 7.2,可以使用sudo apt install php7.2-mysql安装相关包。

在其他PHP版本和包管理器上使用类似的命令。

其他回答

我在尝试使用pdo_sqlite时遇到了相同的异常。问题是自动创建的20-pdo_sqlite.ini和20-sqlite3.ini符号链接(在/etc/php5/mods-enabled中)被破坏了。

删除损坏的符号链接,并手动添加它们:

Sudo ln -s /etc/php5/mods- available /pdo_sqlite.ini /etc/php5/mods-enabled/20-pdo_sqlite.ini Sudo ln -s /etc/php5/mods- available /sqlite3.ini /etc/php5/mods-enabled/20-sqlite3.ini

修复了问题。

注意:这将不适用于旧的php版本,因为他们不寻找/etc/php5/mods-enabled中的配置

这个答案是mysql数据库和谁正在使用Xammp

我尝试了很多来自StackOverflow的代码,但主要问题是,我们必须检查这两个文件xammp php.ini文件和php文件夹php.ini文件,并取消注释这个扩展名“extension=pdo_mysql”在这两个。ini注释一个看起来像这样

;extension=pdo_mysql

在重新启动xammp并在终端中运行这些命令之后,只需从开头删除“;”分号

php artisan migrate:fresh --seed

这个命令将刷新你的迁移,也做了播种

关闭上次运行服务命令并再次运行它

php artisan serve

现在它为你工作了。

如果有任何错误,那么任何高级都可以更新这个答案

对于CentOS上的PHP 5.5,我通过安装php55-mysqlnd包来解决这个问题。

sudo yum -y install php55w-mysqlnd # For Webtatic
sudo yum -y install php55u-mysqlnd # For Remi

为了帮助安装,请编写注释,因为这取决于系统上安装PHP的方式。可用的回购是网络战术和remi。

如果你读了上面所有的答案,它仍然不工作…

确保PHP PDO连接字符串正常。不像我的:

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

错误消息中没有没有找到驱动程序的信息。

在重新安装所有可能的PDO和MySQL库后,我发现有“at start of my connection string”。

您需要有一个名为pdo_mysql的模块。寻找以下在phpinfo(),

pdo_mysql

PDO Driver for MySQL, client library version => 5.1.44