php artisan migrate:[PDOException] 找不到驱动程序

Posted

技术标签:

【中文标题】php artisan migrate:[PDOException] 找不到驱动程序【英文标题】:php artisan migrate : [PDOException] could not find driver 【发布时间】:2014-11-27 03:57:25 【问题描述】:

我的系统配置是 Ubuntu 14.04 + XAMPP + Laravel 4 已安装

mysql驱动配置/opt/lampp/htdocs/larva/app/config/database.php

'mysql' => array(
            'driver'    => 'mysql',
            'host'      => 'localhost',
            'database'  => 'db_larva',
            'username'  => 'root',
            'password'  => '*****',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => 'tbl_',
        ),

/opt/lampp/etc/php.ini 上启用了 PDO 扩展

extension=php_pdo_mysql.dll

使用创建表

php artisan migrate:make create_users --create=users 

生成2014_10_02_114459_create_users.php

php artisan migrate:make create_orders --create=orders

创建2014_10_02_054103_create_orders.php

现在在终端上我做了什么

cd /opt/lampp/htdocs/larva/ 
php artisan migrate

报错

[PDOException] 找不到驱动程序

当我跑步时

php artisan migrate --database=db_larva

它再次给出其他错误

[InvalidArgumentException] 数据库 [db_larva] 未配置。

请指导我做错了什么?

我的猜测:

位置是否正确?在根文件夹中运行php artisan 吗?

function up()里面的默认表结构需要多写一些代码,可能是db连接设置

php artisan migrate:make create_users --create=usersphp artisan migrate:make create_users --create --table=users 我还必须在其他地方配置数据库设置。 表前缀可能有问题。

我还没有在代码中的任何地方编写单行来连接数据库。在哪里编写连接字符串的代码,或者那是后期?

php --ini 给出不同的 php ini 路径?

Configuration File (php.ini) Path: /etc/php5/cli
Loaded Configuration File:         /etc/php5/cli/php.ini
Scan for additional .ini files in: /etc/php5/cli/conf.d
Additional .ini files parsed:      /etc/php5/cli/conf.d/05-opcache.ini,
/etc/php5/cli/conf.d/10-pdo.ini,
/etc/php5/cli/conf.d/20-json.ini,
/etc/php5/cli/conf.d/20-mcrypt.ini,
/etc/php5/cli/conf.d/20-readline.ini,
/etc/php5/cli/conf.d/20-xdebug.ini

【问题讨论】:

签出this solution 【参考方案1】:

参数--database=用于选择DB连接。您的数据库连接名称是 mysql,因为您有:

'mysql' =>

所以您应该使用以下命令运行此查询:

php artisan migrate --database=mysql

但是在app/config/database.php 文件中有一行:

'default' => 'mysql',

如果设置为mysql,则在要迁移到默认数据库连接时,迁移时不需要传递--database参数。

php artisan migrate

足够了

编辑

在您的情况下,您应该编辑您的 /etc/php5/cli/php.ini 文件以启用 PDO 扩展

【讨论】:

是的。 t 是问题所在。 php artisan migrate 不起作用,顺便说一句,这是原来的问题 @diEcho 你有同样的错误吗?您将什么定义为默认连接以及您尝试了哪个命令?你确定你没有在其他环境中设置数据库吗? @diEcho 您应该在终端php --ini 中运行以显示ini 文件路径并确保在此文件中也启用了PDO 我做到了,但令人惊讶的是它显示了 ini file 的不同路径,但我交叉检查并得到 /lammp/.. 文件中的 php.ini 是工作 ini @diEcho 经常php cli和standardphp有不同的ini文件路径【参考方案2】:

我有同样的错误和设置我通过添加学说/dbal 清除它

composer require doctrine/dbal

【讨论】:

【参考方案3】:

在您的php.ini 文件中取消注释

;extension=php_pdo_mysql.dll

并重新启动 apache 服务器。

【讨论】:

【参考方案4】:

我在 xubuntu 14.04 上遇到了这个错误。我分两步修复它:

    打开终端并运行sudo apt-get install php5-mysql 将 db-host 更改为 127.0.0.1(而不是使用 localhost)

【讨论】:

【参考方案5】:

更改 .env 文件。我在 laravel 5.2 中也遇到了同样的问题

我已经用下面的代码进行了更改,它运行良好。

APP_ENV=local
APP_DEBUG=true
APP_KEY=SomeRandomString

DB_HOST=localhost
DB_DATABASE=todo  /* Use your database Name */
DB_USERNAME=root   /* Use your host Name */
DB_PASSWORD=

CACHE_DRIVER=file
SESSION_DRIVER=file

【讨论】:

【参考方案6】:

编辑您的 .env 文件并正确更新。

DB_HOST=127.0.0.1
DB_DATABASE=YOUR DB NAME
DB_USERNAME=YOUR DB USER NAME
DB_PASSWORD= YOUR DB PASSWORD

使用 127.0.0.1 而不是 localhost..

【讨论】:

以上是关于php artisan migrate:[PDOException] 找不到驱动程序的主要内容,如果未能解决你的问题,请参考以下文章

php artisan migrate 命令迁移错误

为啥 PHP artisan migrate 命令显示错误?

Lavarel 执行:php artisan migrate时报错

php artisan migrate 抛出 PDOException

laravel php artisan migrate 错误(超时)

php artisan migrate 给我 Lumen 错误