問題
postgres 10.5
で実行するsymfony 4
およびphp 7.1
アプリケーションの新しいセットアップがあります。しかし、マイグレーションを実行しようとすると、次のInvalid value for parameter "client_encoding": "utf8mb4"
エラーが発生し続けます。
再現手順
.env
ファイルでDSNを変更して、たとえば、私のwasDATABASE_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
は標準を残しました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
私にとっては、次のようにデータベースURLにエンコーディングを追加するのに役立ちました:
postgres://api-platform:!ChangeMe!@db/api?charset=UTF-8
この問題はAPP_ENV=prod
。