Symfony 4,Postgres - `参数"client_encoding"的值无效:"utf8mb4"`运行doctrine命令

Bik*_*net 7 php postgresql symfony symfony4

问题

我有一个新的设置postgres 10.5symfony 4应用程序运行php 7.1.但是当我尝试运行迁移时.我一直收到以下Invalid value for parameter "client_encoding": "utf8mb4"错误. 在此输入图像描述

重现步骤

  1. .env文件上修改DSN以根据您的设置更正值.我是DATABASE_URL="pgsql://postgres:password@db:5432/a_db".
  2. 使用创建一个实体(Any会这样做) php bin/console make:entity
  3. 制作迁移文件 php bin/console make:migration

预期结果

我应该收到Success消息.

所以我的问题是

我遵循文档时在这里错过了什么?

Bik*_*net 18

所以我在postgres中的实际客户端配置utf8不是utf8mb4.似乎symfony不会自动为我们检测版本和数据库.

Symfony 4已经离开的标准utf8mb4MYSQL在配置文件中config/packages/doctrine.yaml.不应忘记根据这些允许的配置更改此配置文件.所以当我改变价值时问题就解决了

dbal: driver: 'pdo_mysql' server_version: '5.7' charset: utf8mb4 default_table_options: charset: utf8mb4 collate: utf8mb4_unicode_ci

dbal: driver: 'pdo_postgresql' server_version: '10.5' charset: utf8 default_table_options: charset: utf8 collate: utf8_unicode_ci

  • 看不出任何原因导致downvotes,所以我给你upvotes ;-)顺便说一句:你可以将charset附加到`.env`里面的`DATABASE_URL`这样:`DATABASE_URL ="pgsql:// postgres:password @db:5432/a_db?charset = UTF-8`看起来这在任何地方都没有真正记载,所以我打开了这个https://github.com/symfony/symfony-docs/pull/10410 (2认同)