Symfony 5 - “驱动程序中发生异常:找不到驱动程序”

问题描述 投票:0回答:13

我目前正面临这个问题。我真的是 Symfony 的新手。

问题: 当我使用 cli 创建新数据库时

symfony console doctrine:database:create
,我收到这些错误:

In AbstractPostgreSQLDriver.php line 102:

  An exception occurred in driver: could not find driver  


In Exception.php line 18:

  could not find driver  


In PDOConnection.php line 38:

  could not find driver

我使用 php 7.4 和 xampp 并安装了正常的 pdo_sql :

extension=bz2
extension=curl
;extension=ffi
;extension=ftp
extension=fileinfo
extension=gd2
extension=gettext
;extension=gmp
;extension=intl
;extension=imap
;extension=ldap
extension=mbstring
extension=exif      ; Must be after mbstring as it depends on it
extension=mysqli
;extension=oci8_12c  ; Use with Oracle Database 12c Instant Client
;extension=odbc
extension=openssl
;extension=pdo_firebird
extension=pdo_mysql
;extension=pdo_oci
;extension=pdo_odbc
;extension=pdo_pgsql
extension=pdo_sqlite
;extension=pgsql
;extension=shmop

这是我的 .env 文件配置:

###> doctrine/doctrine-bundle ###
# Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
# IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml
#
# DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db"
DATABASE_URL="mysql://root:@127.0.0.1:3306/dbname"
DATABASE_URL="postgresql://db_user:[email protected]:5432/db_name?serverVersion=13&charset=utf8"
###< doctrine/doctrine-bundle ###

这是我的doctrine.yaml 文件配置:

doctrine:
dbal:
    url: '%env(resolve:DATABASE_URL)%'
    # IMPORTANT: You MUST configure your server version,
    # either here or in the DATABASE_URL env var (see .env file)
    #server_version: '13'
orm:
    auto_generate_proxy_classes: true
    naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware
    auto_mapping: true
    mappings:
        App:
            is_bundle: false
            type: annotation
            dir: '%kernel.project_dir%/src/Entity'
            prefix: 'App\Entity'
            alias: App

我已经搜索了几个小时,但找不到任何解决方案来解决我的问题,有人有想法吗? 我在窗户上。

非常感谢!

sql symfony
13个回答
11
投票

如果您在 Linux 中工作,可能缺少一些扩展,请运行这些命令


sudo apt-get install php-mysql php-pdo


9
投票

如果你想使用Mysql,注释掉这一行

DATABASE_URL="postgresql://db_user:[email protected]:5432/db_name?serverVersion=13&charset=utf8" 
如果不评论另一行


3
投票

就我而言,我从同事那里得到了

.env.local
文件,并愚蠢地保存了它,没有前导点,因此 Symfony 使用
.env
文件中的值,该文件读取
DATABASE_URL="postgresql://symfony:[email protected]:5432/app?serverVersion=13&charset=utf8"
而不是
DATABASE_URL="mysql://foo:[email protected]:3306/baz?serverVersion=mariadb-x.y.z"
中的正确
.env.local


2
投票

我有同样的问题,PHP 7.4.29,xampp,windows。

为了安装Xdebug,我将PHP版本升级到7.4.29(之前是7.4.18),我猜这个错误是从那时起发生的。数据库连接以前工作过。我将旧 php.ini 中的扩展复制到新的 php.ini 中,但错误仍然存在。

解决问题的方法:添加此行:

extension_dir = "D:\programs\xampp\php\ext"

并激活这些扩展:

extension=bz2
extension=curl
extension=fileinfo
extension=gd2
extension=gettext
extension=mbstring
extension=exif
extension=mysqli
extension=pdo_mysql
extension=pdo_sqlite

2
投票

我遇到了同样的问题,我正在使用 docker 运行 Symofny 应用程序。 当您将doctrine-bundle添加到您的应用程序时,在Dockerfile中将出现此行,它将安装postgres的驱动程序。

你必须删除它并添加这一行,这将安装 mysql 的驱动程序

RUN docker-php-ext-install pdo pdo_mysql

我希望这对某人有帮助。


1
投票

我在 Windows 上运行 Homestead/vagrant,我的问题是,即使我以管理员身份打开终端,我也无法在 Windows 上执行此命令

php bin/console doctrine:database:create

正如这两张图片所示,我尝试了 Cmder 和 Git bash,但都失败了,说

an execption occured in driver: could not find driver


然后我通过 SSH 进入我的 vagrant box 解决了这个问题

vagrant ssh

 导航到工作的 symfony 文件夹并从那里运行命令 
php bin/console doctrine:database:create
 出于某种原因,它起作用了!

我希望有一种更简单的方法来调试这些东西,但我想这就是它在 Windows 上的工作方式。希望这可以帮助那里的人


1
投票
php.ini

    复制路径
  1. 找到文件然后打开它
  2. 删除
  3. ;
    中的
    extension=mysqli


1
投票
我也遇到了这个问题,只需取消注释您计算机上的 DATABASE_URL(sqlite、mysql 或 postresql)即可。


1
投票
步骤 1 => 进入 Xaamp 控制面板,然后单击 Apache 的配置

步骤 2 => 单击 PHP(php.ini)。浏览文件。您可以看到这些扩展。

扩展名=bz2 扩展名=卷曲

删除;来自 ;extension=pdo_pgsql 并保存并关闭文件

第 3 步 => 现在回到您的项目。单击 .env 文件并注释此行:

DATABASE_URL="postgresql://symfony:

[电子邮件受保护]:5432/app?serverVersion=13&charset=utf8"

这有效!


0
投票
当我输入以下命令时,我遇到了同样的问题:

symfony 控制台 make:user 用户 我用命令解决了这个问题: php bin/console make:user 用户。 想要创建一个用户


0
投票
从 .env 文件中删除或注释以下行:

DATABASE_URL="postgresql://db_user:[email protected]:5432/db_name?serverVersion=13&charset=utf8"
    

0
投票
我也遇到了同样的问题,解决问题:

  • 输入

    php --ini

     查看文件的路径 
    php.init

  • 如果您使用的是 vscode,请按 ctr + 单击路径,否则请按照计算机上的手动路径找到文件

    php.init 确保使用管理员权限打开 php.init 文件!!

  • 编辑文件并取消注释

    extension=pdo_mysql

    
    

  • 保存并重试

    php bin/console doctrine:database:create

    
    

  • 输入

    php -m

     检查您是否在列表中 
    pdo_mysql

here an illustration


0
投票
我遇到了同样的问题,我的解决方案是: 转到窗口“cmd” 输入:“php --ini” 将出现一个路径:“C:\wamp64....” 我在笔记本电脑上的文件资源管理器上遵循了这条路径 当我找到文件“php.ini”时 我只是通过执行“ctrl+h”来搜索“version=pdo_mysql”行 当我找到它时,我删除了逗号“;”上线了,问题解决了:)

© www.soinside.com 2019 - 2024. All rights reserved.