Artisan 迁移找不到驱动程序
Posted
技术标签:
【中文标题】Artisan 迁移找不到驱动程序【英文标题】:Artisan migrate could not find driver 【发布时间】:2018-03-26 12:02:49 【问题描述】:我正在尝试安装 Laravel。我已经安装了Xampp
,但是当我尝试使用php artisan migrate
设置我的数据库时,我得到了错误:
[Illuminate\Database\QueryException] 找不到驱动程序(SQL: select * from information_schema.tables where table_schema = homestead 和 table_name = migrations) [PDOException] 找不到 司机
config/database.php
文件有相关连接:
'connections' => [
'sqlite' => [
'driver' => 'sqlite',
'database' => env('DB_DATABASE', database_path('database.sqlite')),
'prefix' => '',
],
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
'pgsql' => [
'driver' => 'pgsql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '5432'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
'schema' => 'public',
'sslmode' => 'prefer',
],
'sqlsrv' => [
'driver' => 'sqlsrv',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '1433'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
],
],
有什么想法吗?
【问题讨论】:
在您的database.php
上是否设置了default connection name
? 'default' => env('DB_CONNECTION', 'mysql'),
?
您是否在.env
中创建了数据库集?
Laravel: PDOException: could not find driver的可能重复
【参考方案1】:
如果您安装了多个 php 版本,应用了所有其他选项,例如 php.ini 中的 UN 注释驱动程序,但它不起作用,您可能会错过以下步骤
请在 cmd 中查看php -v
通过右键单击 PC 和属性转到您的环境变量
检查您的 php 密钥的路径,它可能指向旧版本。
【讨论】:
【参考方案2】:我很尴尬。我知道这对那些使用 XAMPP 的人没有帮助,但我不得不分享。我使用在 Windows 10 中运行的 ScotchBox 虚拟机在 Vagrant 中安装了开箱即用的 Laravel。我正在关注 Digital Ocean 教程。这应该可以工作。
和你一样,我跑了php artisan migrate
,我得到了
could not find driver (SQL: select * from sqlite_master where type = 'table' and name = migrations)
几个小时后,我想
也许我应该在 Vagrant shell 内部试试?
我打开vagrant ssh
并再次运行php artisan migrate
。我收到了一条不同的消息:
Could not open input file: artisan
几个小时后,我猜对了。
vagrant ssh
cd \var\www\
php artisan migrate
Migration table created successfully
所以,是的。我在错误的 shell 和错误的文件夹中。
【讨论】:
【参考方案3】:您还需要安装 PHP-MySQL 驱动程序:
sudo apt install php-mysql
【讨论】:
【参考方案4】:在您的 php.ini
配置文件中,只需取消注释扩展:
;extension=pdo_mysql
(您可以在安装服务器的 php 文件夹中找到您的 php.ini 文件。)
做这个
extension=pdo_mysql
现在您需要在 find DB_DATABASE=
中配置您的 .env 文件,写入您使用的数据库名称,而不是像我使用我的数据库并且数据库名称为“abc”时那样迁移,而不是我需要在那里写入 DB_DATABASE=abc
和保存那个 .env 文件并再次运行命令
php artisan migrate
所以运行后你会得到一些类似如下的消息:
php artisan migrate
Migration table created successfully.
【讨论】:
【参考方案5】:对于任何尝试在 Docker 映像中启用扩展的人:
RUN docker-php-ext-install pdo pdo_mysql \
&& docker-php-ext-enable pdo_mysql
基于this answer。
还向@Krishna 提供帮助,以阐明扩展问题。
【讨论】:
【参考方案6】:在 ubuntu 或 windows 中
删除 ;从 ;extension=pdo_mysql 或 extension=php_pdo_mysql.dll 并添加 extension=pdo_mysql.so
重启 xampp 或 wampp
安装 sudo apt-get install php-mysql
和
php 工匠迁移
【讨论】:
【参考方案7】:确保你已经安装了php-mysql,pdo需要php-mysql才能正常运行。如果没有,您可以简单地输入
sudo apt install php-mysql
【讨论】:
【参考方案8】:如果你在你的linux机器上安装了php
和mysql
,php需要php-mysql
扩展才能与mysql通信。因此,请确保您还使用以下方式安装了此扩展:
sudo yum install php-mysql
在基于 redhat 的机器中。
和
sudo apt-get install php-mysql
在 debian 机器中。
【讨论】:
这个答案在 ubuntu 18.04 中对我有用,谢谢@Ali_Hr 这个答案在 Ubuntu 20.04 LTS 上对我有用,我使用 Xampp 作为我的 localhost 环境感谢您节省了我的一天@Ali_Hr【参考方案9】:如果您使用的是 linux 系统
请尝试运行sudo php artisan migrate
至于我,有时数据库操作需要在 laravel 中使用 sudo 运行。
【讨论】:
【参考方案10】:在 Windows 和 PHP 7.4.5 中,转到 php.ini 并取消注释此行
extension=pdo_mysql
【讨论】:
【参考方案11】:我们已经按照以下步骤解决了同样的错误。
linux命令出现这种类型的错误,首先,检查你的php.ini文件
If your php.ini file exists then in configuration file simply uncomment the extension:
;extension=php_pdo_mysql.dll
Else follow below steps
step1:php -v
step2: Install php mysql extension
php 7.0 sudo apt-get install php7.0-mysql
php 7.1 sudo apt-get install php7.1-mysql
php 7.2 sudo apt-get install php7.2-mysql
php 7.3 sudo apt-get install php7.3-mysql
step3: service apache2 restart
step4: php artisan migrate
【讨论】:
【参考方案12】:如果你正在匹配 sqlite 数据库: 在您的 php 文件夹中打开 php.ini 文件,转到:
;extension=pdo_sqlite
只要去掉分号就可以了。
【讨论】:
【参考方案13】: 转到 .env 文件并更改以下内容DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=shreemad
DB_USERNAME=root
DB_PASSWORD=
将 DB_PASSWORD 字段更改为
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=shreemad
DB_USERNAME=root
DB_PASSWORD=" "
在我的情况下它有效
注意:如果你在 mysql 中的密码为空
【讨论】:
【参考方案14】:我是 Windows 和 XAMPP 用户。对我有用的是在 XAMPP 的 php.ini
和 C:\php\php.ini
的 php.ini
中添加 extension=php_pdo_mysql.dll
。
在你的 cmd 中运行这个命令来知道你的配置文件在哪里
php -i | find /i "Configuration File
【讨论】:
【参考方案15】:虽然有时您可能有多个 php 版本,但您也可能有一个保留版本的 php-mysql.. 执行 sudo dpkg -l | grep mysql | grep php 并比较你从 php -v 得到的结果
【讨论】:
【参考方案16】:我知道这有点晚了,但我正在为仍在 Windows 上遇到此问题的任何人回答这个问题(使用 XAMPP)。
步骤 1. 验证您的 PHP 版本是否不匹配。 为此,请打开 routes/web.php 并创建一个简单的路由来返回 php 信息,如下所示:
Route::get('/', function()
return response()->json([
'stuff' => phpinfo()
]);
)
and compare this with output from your command line
As we can see, in my case there is a mismatch, this usually happens if you have multiple versions of php installed.
步骤 2. 将 xampp 使用的 php 版本添加到系统路径
第 3 步。确认您在 php.ini 文件中启用了扩展。 注意。确保您正在编辑显示在 phpinfo() 命令结果中“加载的配置文件”条目下的 php.ini 文件。
【讨论】:
【参考方案17】:在您的 php.ini 配置文件中,只需取消注释扩展名:
;extension=php_pdo_mysql.dll
(您可以在安装堆栈服务器的 php 文件夹中找到您的 php.ini 文件。)
如果您使用的是 Windows,请输入:extension=php_pdo_mysql.dll
如果您使用的是 Linux,请输入:extension=pdo_mysql.so
然后快速重启服务器。
如果这对您不起作用,您可能需要将 pdo_mysql 扩展安装到您的 php 库中。
【讨论】:
它也可能是整个 php-mysql 扩展丢失。所以也许也像:sudo apt install php7.3-mysql(更改 7.3 whit your php ver) @Krishna Kant Chourasiya,您好,我在迁移时也遇到错误,请帮助我,我已经尝试了此页面中给出的所有解决方案,但没有任何效果。这是链接***.com/questions/60716326/…以上是关于Artisan 迁移找不到驱动程序的主要内容,如果未能解决你的问题,请参考以下文章
Laravel:PHP Artisan Migrate 抛出 PDO 异常:找不到驱动程序(Postgres)
php artisan migrate throwing [PDO Exception] 找不到驱动程序 - 使用 Laravel
php artisan migrate:[PDOException] 找不到驱动程序
在 Laravel 5 中找不到类“App\Http\Controllers\Artisan”