Symfony返回utf8编码错误,尽管我已经更新了配置

Symfony returns utf8 encoding error althought I have updated the config

提问人:Onur 提问时间:11/15/2023 更新时间:11/16/2023 访问量:40

问:

我的问题是我收到以下错误,尽管我已经更新了我的 Symfony 项目的配置。问题来了:

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

这是我的doctrine.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 驱动程序一起使用。我不明白我得到错误的原因,如果有人能找到问题,我会很高兴。谢谢!

php sql-server symfony

评论


答:

0赞 Alexandre Tranchant 11/15/2023 #1

首先,我建议您注意 DATABASE_URL 环境变量不会覆盖您配置的字符集。(有时,有这样一行:

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

然后,根据配置参考,charset 选项是特定于 RDBMS 的,开发人员必须参考其 RDBMS 的手册以获取更多信息。

根据这个答案,字符集 utf8 不存在,但字符集 UTF-8。

因此,请尝试确保语法存在。(我看到一些更复杂的东西,比如,但这可能是排序规则,而不是字符集)cp1254SQL_Latin1_General_CP1254_CI_AS

IMO 和错误消息,您的问题与我的第一个建议有关,因为您的字符集配置似乎被忽略了。

如果你的参数仍然被忽略,请尝试删除 doctrine.yaml 文件中的 url 参数,并临时使用没有 env 变量的东西。

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

评论

0赞 Onur 11/15/2023
我已经尝试了您提到的配置,但仍然遇到相同的错误。顺便说一句,我也使用 sqlsrv 驱动程序而不是pdo_sqlsrv。
0赞 Alexandre Tranchant 11/15/2023
但是,您的参数仍然被忽略。所以我猜有一个错误配置调用。您是否尝试完全删除该参数?我更新了我的答案url
0赞 Onur 11/16/2023
正如我提到的,它现在正在工作。
0赞 Onur 11/16/2023 #2

好的,我找到了问题。问题是我用 triyng 更新 .env 文件,但在我的本地,我应该更新 .env.local。它现在正在工作。

评论

0赞 Alexandre Tranchant 11/17/2023
谢谢你的回答。你能接受你自己的答案吗?因此,社区将关注其他问题:)UYO公司