php Symfony返回utf8编码错误althought我已经更新了配置

gz5pxeao  于 2023-11-16  发布在  PHP
关注(0)|答案(1)|浏览(126)

我的问题是,我得到以下错误,虽然我已经更新了我的Symfony项目的配置。这里是问题:

An exception occurred in the driver: SQLSTATE [IMSSP, -48]: The encoding 'utf8' is not a supported encoding for the CharacterSet connection option.

字符串
这是我的教义.yaml文件:

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


我正在使用MSSQL 2017与我的Symfony应用程序和sqlsrv驱动程序。我不明白我得到错误的原因,如果有人能找到问题,我会很高兴。谢谢!

klh5stk1

klh5stk11#

首先,我建议你小心,DATABASE_URL环境变量不要覆盖你配置的字符集。(有时,有这样一行:

DATABASE_URL=sqlsrv://app:[email protected]:32781/app?charset=utf8

字符串
然后,根据configuration reference,charset选项是特定于RDBMS的,开发人员必须参考他们的RDBMS手册以获取更多信息。
根据这个answer,字符集utf8不存在,但字符集UTF-8。
因此,请尝试确保语法cp1254存在(我看到一些更复杂的东西,如SQL_Latin1_General_CP1254_CI_AS,但这可能是排序规则,而不是字符集)。
IMO和根据错误消息,你的问题与我的第一个建议有关,因为你的字符集配置似乎被忽略了。
如果你的参数仍然被忽略,试着在你的doctrin.yaml文件中删除url参数,暂时使用一些没有env变量的东西。

doctrine:
    dbal:
        default_connection:           default
        connections:
            default:
                dbname:               db_name
                host:                 localhost
                port:                 3000
                user:                 foo
                charset:              'CP1254'

相关问题