symfony4flex数据库连接使用`urlencode`

ibps3vxo  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(363)

我开始使用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 . 我说得对吗?

fcg9iug3

fcg9iug31#

尝试更改:

url: '%env(resolve:DATABASE_URL)%'

对此:

url: '%env(DATABASE_URL)%'

相关问题