web-dev-qa-db-ja.com

Symfony 4、Postgres-実行中のdoctrineコマンドでの「パラメータ "client_encoding"の無効な値: "utf8mb4" `」

問題

postgres 10.5で実行するsymfony 4およびphp 7.1アプリケーションの新しいセットアップがあります。しかし、マイグレーションを実行しようとすると、次のInvalid value for parameter "client_encoding": "utf8mb4"エラーが発生し続けます。 enter image description here

再現手順

  1. .envファイルでDSNを変更して、たとえば、私のwasDATABASE_URL="pgsql://postgres:password@db:5432/a_db"
  2. php bin/console make:entityを使用してエンティティを作成します(誰でも可能です)
  3. 移行ファイルを作成php bin/console make:migration

期待される結果

Successメッセージを受け取っているはずです。

だから私の質問は

documentation をフォローしているため、ここで何を見逃しましたか?

9
Bikal Basnet

したがって、postgresの実際のクライアント構成はutf8ないutf8mb4。 symfonyはバージョンとデータベースを自動的に検出しないようです。

Symfony 4は標準を残しましたutf8mb4 for MYSQL for the config file config/packages/doctrine.yaml。この構成ファイルは、これらに基づいて変更することを忘れないでください 許可される構成 。値を変更すると問題が修正されました

from

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

to

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

22
Bikal Basnet

私にとっては、次のようにデータベースURLにエンコーディングを追加するのに役立ちました:

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

この問題はAPP_ENV=prod

1
Kim