【问题标题】:php artisan migrate : [PDOException] could not find driverphp artisan migrate:[PDOException] 找不到驱动程序
【发布时间】:2023-03-27 13:36:02
【问题描述】:

我的系统配置是 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
    

【问题讨论】:

标签: laravel laravel-4 laravel-artisan artisan-migrate


【解决方案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 上遇到了这个错误。我分两步修复它:

      1. 打开终端并运行sudo apt-get install php5-mysql
      2. 将 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..

          【讨论】:

            猜你喜欢
            • 2016-01-13
            • 2016-07-30
            • 1970-01-01
            • 2019-01-17
            • 2018-10-29
            • 2016-08-30
            • 2014-04-23
            • 2015-04-12
            • 1970-01-01
            相关资源
            最近更新 更多