web-dev-qa-db-fra.com

Symfony 4, Postgres - `Valeur non valide pour le paramètre" client_encoding ":" utf8mb4 "` lors de l'exécution de la commande doctrine

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. enter image description here

Étapes à reproduire

  1. Sur .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".
  2. Créez une entité (Any ferait l'affaire) en utilisant php bin/console make:entity
  3. Créer un fichier de migration 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 ?

7
Bikal Basnet

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

18
Bikal Basnet

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.

1
Kim