在Windows上,larvel 9 PDOException::(“无法找到驱动程序”)

u3r8eeie  于 2022-11-26  发布在  Windows
关注(0)|答案(2)|浏览(157)

我想将MySQL数据库连接到Laravel应用程序。
我使用MySQL的PHPMyAdmin管理工具创建了一个,然后将其添加到.env中,作为database.php应用程序文件。
我运行终端命令:php artisan migrate,它给了我以下错误:

could not find driver (SQL: select * from information_schema.tables where table_schema = pl_project and table_name = migrations and table_type = 'BASE TABLE')
  at C:\Users\u\Documents\pl_project_test\pl_project_test\vendor\laravel\framework\src\Illuminate\Database\Connection.php:760
    756▕         // If an exception occurs when attempting to run a query, we'll format the error
    757▕         // message to include the bindings with SQL, which will make this exception a
    758▕         // lot more helpful to the developer instead of just the database's errors.
    759▕         catch (Exception $e) {
  ➜ 760▕             throw new QueryException(
    761▕                 $query, $this->prepareBindings($bindings), $e
    762▕             );
    763▕         }
    764▕     }

  1   C:\Users\u\Documents\pl_project_test\pl_project_test\vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php:70
      PDOException::("could not find driver")

  2   C:\Users\u\Documents\pl_project_test\pl_project_test\vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php:70
      PDO::__construct()
以下是我编辑的.env摘录:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=pl_project
DB_USERNAME=root
DB_PASSWORD=
以下是我编辑的database.php摘录:
'mysql' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'pl_project'),
            'username' => env('DB_USERNAME', 'root'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
            'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
            ]) : [],
        ]
以下是命令的输出:php -m
[PHP Modules]
bcmath
calendar
Core
ctype
curl
date
dom
fileinfo
filter
hash
iconv
json
libxml
mbstring
mysqlnd
openssl
pcre
PDO
Phar
readline
Reflection
session
SimpleXML
SPL
standard
tokenizer
xml
xmlreader
xmlwriter
zip
zlib
[Zend Modules]
几点注意事项:

1.我确实向我的 env 变量和MySQL添加了PHP。
1.我在php.ini中取消了对extension=pdo_mysql的注解。
但这一切都没有改变什么,我仍然得到同样的错误。

2j4z5cfb

2j4z5cfb1#

没有必要编辑database.php文件,因为它正在使用.env作为数据库信息。如果这是一个没有.env文件的新项目,请尝试运行php artisan config:clear
您是否尝试过在启用扩展后重新启动PC?如果您使用Artisan serve运行项目,则在更改ini文件后不会反映出来
我也有一些类似的问题,在几个机器与数据库,它得到了解决与注解'url' =〉env('DATABASE_URL'),行在mysql
希望这些能有所帮助

ql3eal8s

ql3eal8s2#

  • 备注:*

我检查了所有的php.ini文件,有2个,所以我编辑了第二个。重新启动服务器,然后再次尝试迁移,只得到相同的错误。
根据我的记忆,默认的XAMPP安装 lucks 路径xampp/php/中的php.ini文件。
但是在该路径中有php.ini-developmentphp.ini-production配置文件。通常您必须创建这两个文件中任一的副本,这取决于您的用例,并 * 将 “副本” 重命名为php.ini。然后,重命名的文件将被视为 “活动/默认PHP配置文件”
然后打开这个新的 * 重命名的 * php.ini文件,取消注解任何必要的扩展库,保存并重新启动XAMPP Web服务器(Apache)。

附录

您可能需要为您的案例启用/取消注解下面的扩展库。

mysqli

pdo_mysql

pdo_sqlite
附录2

A.启用/取消注解下面的行。将路径更改为XAMPP安装路径。即:

extension_dir="C:\xampp\php\ext"

相关问题