Le problème
J'ai une nouvelle configuration de postgres 10.5
et symfony 4
application exécutée sur php 7.1
. Mais quand j'essaie d'exécuter la migration. Je continue de recevoir les éléments suivants Invalid value for parameter "client_encoding": "utf8mb4"
Erreur.
Étapes à reproduire
.env
fichier en modifiant DSN pour corriger la valeur en fonction de vos paramètres, par exemple. Le mien étaitDATABASE_URL="pgsql://postgres:password@db:5432/a_db"
.php bin/console make:entity
php bin/console make:migration
Résultat attendu
J'aurais dû recevoir un message Success
.
Donc ma question est
Qu'est-ce que j'ai raté ici car j'ai suivi le documentation ?
Donc ma configuration client réelle dans les postgres est utf8
ne pas utf8mb4
. Il semble que symfony ne détecte pas automatiquement la version et la base de données pour nous.
Symfony 4
a quitté la norme utf8mb4
pour MYSQL
dans le fichier de configuration config/packages/doctrine.yaml
. Ce fichier de configuration ne doit pas être oublié de changer en fonction de ces configuration autorisée . Le problème a donc été résolu lorsque j'ai modifié la valeur
à partir de
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
Pour moi, cela a aidé à ajouter l'encodage à l'URL de la base de données, comme ceci:
postgres://api-platform:!ChangeMe!@db/api?charset=UTF-8
Bien que ce problème ne se soit produit que dans APP_ENV=prod
.