我开始使用symfony4+flex的新项目。此时,我正在尝试将我的新应用程序连接到mysql数据库。
我正在关注symfony文档,我已经添加了 doctrine
我的依赖项:
composer require doctrine
composer require maker --dev
然后我在环境变量中添加了数据库连接信息 DATABASE_URL
内部定义 .env
这样地:
### > doctrine/doctrine-bundle ###
DATABASE_URL=mysql://myUser:myPasswordWithSpecialChars@127.0.0.1:3306/myDbName
### < doctrine/doctrine-bundle ###
在这一点上,我面临一个问题:
数据库异常
参数“url”格式错误。
我想这是因为我的mysql密码使用了一些特殊字符。文档正在讨论它:
如果用户名、密码或数据库名称包含uri中被视为特殊的任何字符(例如!、@、$、#),你必须对它们进行编码。有关保留字符的完整列表,请参阅rfc 3986,或使用urlencode函数对其进行编码。
我不太明白如何或者在哪里使用urlencode函数,因为 .env
文件不是php文件(如图所示) doctrine.yaml
).
有人已经用过了吗 urlencode
函数对包含特殊字符的mysql密码进行编码?
谢谢。
编辑
这是我的 doctrine.yaml
文件:
parameters:
# Adds a fallback DATABASE_URL if the env var is not set.
# This allows you to run cache:warmup even if your
# environment variables are not available yet.
# You should not need to change this value.
env(DATABASE_URL): ''
doctrine:
dbal:
# configure these for your database server
driver: 'pdo_mysql'
server_version: '5.7'
charset: utf8
default_table_options:
charset: utf8
collate: utf8_unicode_ci
url: '%env(resolve:DATABASE_URL)%'
orm:
auto_generate_proxy_classes: '%kernel.debug%'
naming_strategy: doctrine.orm.naming_strategy.underscore
auto_mapping: true
mappings:
App:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/Entity'
prefix: 'App\Entity'
alias: App
我没有编辑数据库url参数,因为它已在中定义 .env
. 我说得对吗?
1条答案
按热度按时间fcg9iug31#
尝试更改:
对此: