【问题标题】:Artisan migrate could not find driverArtisan 迁移找不到驱动程序
【发布时间】: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 中创建了数据库集?

标签: php laravel


【解决方案1】:

如果您安装了多个 php 版本,应用了所有其他选项,例如 php.ini 中的 UN 注释驱动程序,但它不起作用,您可能会错过以下步骤

  1. 请在 cmd 中查看php -v

  2. 通过右键单击 PC 和属性转到您的环境变量

  3. 检查您的 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机器上安装了phpmysql,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.iniC:\php\php.iniphp.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,您好,我在迁移时也遇到错误,请帮助我,我已经尝试了此页面中给出的所有解决方案,但没有任何效果。这是链接stackoverflow.com/questions/60716326/…
                                猜你喜欢
                                • 2018-08-15
                                • 2016-08-20
                                • 2023-04-01
                                • 2018-09-04
                                • 1970-01-01
                                • 2019-01-27
                                • 1970-01-01
                                • 2016-11-27
                                • 2023-03-27
                                相关资源
                                最近更新 更多