PHP Artisan迁移:[PDOException]找不到驱动程序。

6
我的系统配置是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_',
        ),

PDO扩展已启用,位于/opt/lampp/etc/php.ini

extension=php_pdo_mysql.dll

使用 create table 命令创建表。
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]未配置。

请指导我错在哪里?

我的猜测:

  • Is location correct? do run php artisan inside the root folder?

  • Default table structure inside function up() need to write some more code, may be db connection settings

  • difference between php artisan migrate:make create_users --create=users and php artisan migrate:make create_users --create --table=users
  • I have to configure database settings somewhere else too.
  • table prefix can be problematic.
  • I haven't write single line to connect database, anywhere in the code yet. where to write the connection sting in code, or that is a later stage?

  • php --ini gives different path of 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
    

请查看此解决方案 - Dov Benyomin Sohacheski
6个回答

6

我在xubuntu 14.04上遇到了这个错误。我通过以下两个步骤进行了修复:

  1. 打开终端并运行sudo apt-get install php5-mysql
  2. 将数据库主机更改为127.0.0.1(而不是使用localhost)

4

参数--database=用于选择数据库连接。由于您已经拥有,因此您的数据库连接名称为mysql:

'mysql' =>

因此,您应该使用以下方式运行此查询:

php artisan migrate --database=mysql

然而,在app/config/database.php文件中,有一行代码:
'default' => 'mysql',

如果您将其设置为mysql,则在迁移至默认数据库连接时,无需传递--database参数。
php artisan migrate

将足够

编辑

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


是的,那就是问题所在。php artisan migrate无法工作,顺便说一下,这就是最初的问题。 - xkeshav
@diEcho 你是否遇到了相同的错误?你定义的默认连接是什么,你尝试了哪个命令?你确定在其他环境中也没有设置数据库吗? - Marcin Nabiałek
1
@diEcho 你应该在终端中运行 php --ini 命令来显示 ini 文件路径,并确保在该文件中启用了 PDO。 - Marcin Nabiałek
我已经尝试过了,但出乎意料的是它显示了不同路径的 ini 文件。但我进行了交叉检查,并发现 /lammp/.. 文件夹中的 php.ini 是有效的。 - xkeshav
@diEcho 经常情况下,php cli 和 standard php 有不同的 ini 文件路径。 - Marcin Nabiałek
显示剩余3条评论

1

我遇到了同样的错误和设置,通过添加doctrine/dbal来解决了这个问题。

composer require doctrine/dbal

0

修改 .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

0

编辑你的 .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。


-2
在你的 php.ini 文件中取消注释。
;extension=php_pdo_mysql.dll

并重新启动Apache服务器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接