我目前正面临这个问题。我真的是 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
我已经搜索了几个小时,但找不到任何解决方案来解决我的问题,有人有想法吗? 我在窗户上。
非常感谢!
如果您在 Linux 中工作,可能缺少一些扩展,请运行这些命令
sudo apt-get install php-mysql php-pdo
如果你想使用Mysql,注释掉这一行
DATABASE_URL="postgresql://db_user:[email protected]:5432/db_name?serverVersion=13&charset=utf8"
如果不评论另一行
就我而言,我从同事那里得到了
.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
。
我有同样的问题,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
我遇到了同样的问题,我正在使用 docker 运行 Symofny 应用程序。 当您将doctrine-bundle添加到您的应用程序时,在Dockerfile中将出现此行,它将安装postgres的驱动程序。
你必须删除它并添加这一行,这将安装 mysql 的驱动程序
RUN docker-php-ext-install pdo pdo_mysql
我希望这对某人有帮助。
我在 Windows 上运行 Homestead/vagrant,我的问题是,即使我以管理员身份打开终端,我也无法在 Windows 上执行此命令
php bin/console doctrine:database:create
正如这两张图片所示,我尝试了 Cmder 和 Git bash,但都失败了,说 an execption occured in driver: could not find driver
vagrant ssh
导航到工作的 symfony 文件夹并从那里运行命令
php bin/console doctrine:database:create
出于某种原因,它起作用了!我希望有一种更简单的方法来调试这些东西,但我想这就是它在 Windows 上的工作方式。希望这可以帮助那里的人
步骤 2 => 单击 PHP(php.ini)。浏览文件。您可以看到这些扩展。
扩展名=bz2 扩展名=卷曲
删除;来自 ;extension=pdo_pgsql 并保存并关闭文件
第 3 步 => 现在回到您的项目。单击 .env 文件并注释此行:
DATABASE_URL="postgresql://symfony:
[电子邮件受保护]:5432/app?serverVersion=13&charset=utf8"
这有效!
symfony 控制台 make:user 用户 我用命令解决了这个问题: php bin/console make:user 用户。 想要创建一个用户
DATABASE_URL="postgresql://db_user:[email protected]:5432/db_name?serverVersion=13&charset=utf8"