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

Symfony 4, Postgres - `Invalid value for parameter "client_encoding": "utf8mb4"` on running doctrine command

问题

我在 php 7.1 上重新设置了 postgres 10.5symfony 4 应用程序 运行。但是当我尝试 运行 迁移时。我不断收到以下 Invalid value for parameter "client_encoding": "utf8mb4" 错误。

重现步骤

  1. .env 文件上,根据您的设置修改 DSN 以更正值,例如。我的是DATABASE_URL="pgsql://postgres:password@db:5432/a_db"
  2. 使用 php bin/console make:entity
  3. 创建一个实体(任何人都可以)
  4. 制作迁移文件php bin/console make:migration

预期结果

我应该收到 Success 消息。

所以我的问题是

我在关注 documentation 时错过了什么?

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

Symfony 4 在配置文件 config/packages/doctrine.yaml 中为 MYSQL 保留了标准 utf8mb4。这个配置文件不要忘记根据这些allowed configuration来改变。所以当我更改值

时问题就解决了

来自

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

对我来说,它有助于将编码添加到数据库 URL,如下所示:

postgres://api-platform:!ChangeMe!@db/api?charset=UTF-8

虽然这个问题只发生在APP_ENV=prod