Laravel:PDOException:找不到驱动程序

art*_*s90 32 php mysql apache sqlite laravel

我正在服务器上开发一个网站我只能访问MySQL和FTP,所以我运行的所有命令都是通过b374k php shell.我遇到了SQL驱动程序的Laravel问题.我尝试切换到文件托管的SQLite(在database/database.sqlite中),但抛出的异常与使用MySQL时相同.控制台的输入和输出如下:

   php artisan migrate:refresh --seed
    [Illuminate\Database\QueryException]
could not find driver (SQL: select * from sqlite_master where type = 'table ' and name = migrations)
 [Doctrine\DBAL\Driver\PDOException]
could not find driver
 [PDOException]
could not find driver
Run Code Online (Sandbox Code Playgroud)

服务器上安装的Apache扩展包括:

    /etc/php/5.6/apache2/conf.d/10-mysqlnd.ini, 
/etc/php/5.6/apache2/conf.d/10-opcache.ini,
 /etc/php/5.6/apache2/conf.d/10-pdo.ini,
 /etc/php/5.6/apache2/conf.d/15-xml.ini, 
/etc/php/5.6/apache2/conf.d/20-calendar.ini,
 /etc/php/5.6/apache2/conf.d/20-ctype.ini, 
/etc/php/5.6/apache2/conf.d/20-curl.ini,
 /etc/php/5.6/apache2/conf.d/20-dom.ini, 
/etc/php/5.6/apache2/conf.d/20-exif.ini, 
/etc/php/5.6/apache2/conf.d/20-fileinfo.ini, 
/etc/php/5.6/apache2/conf.d/20-ftp.ini, /etc/php/5.6/apache2/conf.d/20-gd.ini, 
/etc/php/5.6/apache2/conf.d/20-gettext.ini, 
/etc/php/5.6/apache2/conf.d/20-iconv.ini, 
/etc/php/5.6/apache2/conf.d/20-json.ini, 
/etc/php/5.6/apache2/conf.d/20-mbstring.ini, 
/etc/php/5.6/apache2/conf.d/20-mcrypt.ini, 
/etc/php/5.6/apache2/conf.d/20-mysql.ini, 
/etc/php/5.6/apache2/conf.d/20-mysqli.ini, 
/etc/php/5.6/apache2/conf.d/20-pdo_mysql.ini,
 /etc/php/5.6/apache2/conf.d/20-phar.ini, 
/etc/php/5.6/apache2/conf.d/20-posix.ini, 
/etc/php/5.6/apache2/conf.d/20-readline.ini, 
/etc/php/5.6/apache2/conf.d/20-shmop.ini, 
/etc/php/5.6/apache2/conf.d/20-simplexml.ini, 
/etc/php/5.6/apache2/conf.d/20-sockets.ini,
 /etc/php/5.6/apache2/conf.d/20-sysvmsg.ini,
 /etc/php/5.6/apache2/conf.d/20-sysvsem.ini,
 /etc/php/5.6/apache2/conf.d/20-sysvshm.ini,
 /etc/php/5.6/apache2/conf.d/20-tokenizer.ini, 
/etc/php/5.6/apache2/conf.d/20-wddx.ini,
 /etc/php/5.6/apache2/conf.d/20-xmlreader.ini, 
/etc/php/5.6/apache2/conf.d/20-xmlwriter.ini, 
/etc/php/5.6/apache2/conf.d/20-xsl.ini, 
/etc/php/5.6/apache2/conf.d/20-zip.ini
Run Code Online (Sandbox Code Playgroud)

可能是什么问题,我该如何解决?(我无权访问root bash)

Nib*_*ibb 41

如果可以的话,运行:

composer update

composer require doctrine/dbal
Run Code Online (Sandbox Code Playgroud)

看起来你缺少依赖

编辑:

您可能需要在php.ini文件中注释掉以下内容.

;extension=pdo_mysql.so
Run Code Online (Sandbox Code Playgroud)

摘自这篇文章: Laravel 5 PDOException无法找到驱动程序 .我认为在数字海洋上设置laravel时我必须做一些完全相同的事情.

  • 没有帮助,dbal已经安装了,还是一样的错误 (2认同)
  • 我在archlinux中有mariadb,未注释`; extension = pdo_mysql`正常工作 (2认同)
  • 就我而言,我使用的是PostgreSQL。激活“ pdo_pgsql”扩展名并重新启动服务器后,问题消失了。 (2认同)

小智 38

您的数据库驱动程序丢失.解决问题

首先安装驱动程序

对于ubuntu:对于mysql数据库.

sudo apt-get install php5.6-mysql/php7.2-mysql
Run Code Online (Sandbox Code Playgroud)

您还可以搜索其他数据库系统.

您还可以搜索驱动程序:

sudo apt-cache search drivername
Run Code Online (Sandbox Code Playgroud)

然后运行cmd php artisan migrate

  • 谢谢我根据我的PHP版本使用了`sudo apt-get install php7.2-mysql`. (6认同)

Mub*_*bas 19

运行我的测试套件时出现了同样的错误.它之前工作但它升级后我停止了工作.所以我做了

sudo apt-get install php-sqlite3
Run Code Online (Sandbox Code Playgroud)

它起作用了.


小智 10

解决方案1:

1. php -v
Run Code Online (Sandbox Code Playgroud)

输出: PHP 7.3.11-1+ubuntu16.04.1+deb.sury.org+1 (cli)

2. sudo apt-get install php7.3-mysql
Run Code Online (Sandbox Code Playgroud)

解决方案2:

检查您的数据库凭据,如数据库名称数据库用户数据库密码


Sta*_*ers 9

在Ubuntu中更简单(18.04)

apt install php-mysql

做完了 无需编辑任何.ini文件。

编码愉快!

  • 对于 php7.2 运行 `apt install php7.2-mysql`。你也编辑了 php.ini 文件中的 `;` 行`extension=pdo_mysql` (2认同)

Vas*_*aik 7

错误:找不到驱动程序(SQL:select * from testswhere slug= a limit 1)

我在 Laravel 项目中遇到上述错误,我在 ubuntu 16.04 上使用 nginx 服务器

此错误是因为php-mysql缺少驱动程序。要安装它,请键入以下命令。

sudo apt-get install php7.2-mysql
Run Code Online (Sandbox Code Playgroud)

php version在上述命令中指定您的电流。

打开php.ini文件并取消注释以下代码行(删除分号)。

;extension=pdo_mysql
Run Code Online (Sandbox Code Playgroud)

然后重启nginx和php服务

sudo systemctl restart php7.2-fpm
sudo systemctl restart nginx
Run Code Online (Sandbox Code Playgroud)

它对我有用。


Nad*_*req 6

首先检查一下php -m
。如果看不到mysql驱动程序,请安装mysql。sudo apt-cache search php-mysql
您的结果将类似于:

php-mysql - MySQL module for PHP [default]
Run Code Online (Sandbox Code Playgroud)


安装php- mysql驱动

sudo apt-get install php7.1-mysql
Run Code Online (Sandbox Code Playgroud)


Pro*_*igy 6

您可能缺少 sqlite 或您尝试迁移的特定数据库驱动程序。

安装数据库驱动程序,你会没事的。您不一定需要编辑您的 php.ini 文件(尽管这也是修复它的一种方法)。

对于 sqlite 做 -->sudo apt-get install php-sqlite3 然后php artisan migrate

注意:我假设您已经安装了 PHP 和 MySql


Ian*_*ato 6

我在 Ubuntu 16.04 中遇到了类似的问题,对我有帮助的是我为 php 7.2 安装了 php-mysql。如果您有 php 7.2,我建议您运行以下命令,或者根据您的 PHP 版本安装 php mysql。确保您已经安装了 DBAL 包

apt-get install php7.2-mysql

systemctl restart apache2
Run Code Online (Sandbox Code Playgroud)


小智 5

我遇到了同样的问题,我取消注释extension=pdo_sqlite并运行migration,一切正常。


Eno*_*llo 5

我在使用 sqlite 3 时遇到了同样的问题:

  1. 确保对 .env.example 所做的更改与对 .env 文件所做的更改相同。
  2. 然后在终端上运行$sudo apt-get install php-sqlite3 。
  3. 最后$php artisan 迁移。


ras*_*dcs 5

在Linux中下载Mysql和Php

sudo apt install php-mysql
Run Code Online (Sandbox Code Playgroud)

那么问题就解决了。


Mac*_*vão 5

您需要在 php.ini 文件中启用这些扩展

前:

;extension=pdo_mysql
;extension=mysqli
;extension=pdo_sqlite
;extension=sqlite3
Run Code Online (Sandbox Code Playgroud)

后:

extension=pdo_mysql
extension=mysqli
extension=pdo_sqlite
extension=sqlite3
Run Code Online (Sandbox Code Playgroud)

建议您还激活 fileinfo 扩展名,许多软件包都需要它。


小智 5

创建一个 .env 文件。

如果使用 Laravel 和 Composer,请生成项目密钥。

php artisan 密钥:生成