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.5
和 symfony 4
应用程序 运行。但是当我尝试 运行 迁移时。我不断收到以下 Invalid value for parameter "client_encoding": "utf8mb4"
错误。
重现步骤
- 在
.env
文件上,根据您的设置修改 DSN 以更正值,例如。我的是DATABASE_URL="pgsql://postgres:password@db:5432/a_db"
。
- 使用
php bin/console make:entity
创建一个实体(任何人都可以)
- 制作迁移文件
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
。
问题
我在 php 7.1
上重新设置了 postgres 10.5
和 symfony 4
应用程序 运行。但是当我尝试 运行 迁移时。我不断收到以下 Invalid value for parameter "client_encoding": "utf8mb4"
错误。
重现步骤
- 在
.env
文件上,根据您的设置修改 DSN 以更正值,例如。我的是DATABASE_URL="pgsql://postgres:password@db:5432/a_db"
。 - 使用
php bin/console make:entity
创建一个实体(任何人都可以)
- 制作迁移文件
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
。