提问人:Onur 提问时间:11/15/2023 更新时间:11/16/2023 访问量:40
Symfony返回utf8编码错误,尽管我已经更新了配置
Symfony returns utf8 encoding error althought I have updated the config
问:
我的问题是我收到以下错误,尽管我已经更新了我的 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 驱动程序一起使用。我不明白我得到错误的原因,如果有人能找到问题,我会很高兴。谢谢!
答:
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。
因此,请尝试确保语法存在。(我看到一些更复杂的东西,比如,但这可能是排序规则,而不是字符集)cp1254
SQL_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公司
评论