Symfony 4, Postgres - `Неверное значение параметра client_encoding:« utf8mb4 »` при выполнении команды doctrine

Эта проблема

У меня есть свежая установка приложения postgres 10.5 и symfony 4, работающего на php 7.1. Но когда я пытаюсь запустить миграцию. Я все время получаю следующую ошибку Invalid value for parameter "client_encoding": "utf8mb4". Symfony 4, Postgres - `Неверное значение параметра client_encoding:« utf8mb4 »` при выполнении команды doctrine

Действия по воспроизведению

  1. В файле .env измените DSN на правильное значение в соответствии с вашими настройками, например. у меня был DATABASE_URL = "pgsql://postgres:password@db:5432/a_db".
  2. Создайте объект (подойдет любой) с помощью php bin/console make:entity
  3. Сделайте миграционный файл php bin/console make:migration

ожидаемый результат

Я должен был получить сообщение Success.

Итак, мой вопрос

Что мне здесь не хватало, когда я следил за документация?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
10
0
7 391
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Итак, моя фактическая конфигурация клиента в postgres - это utf8, а не utf8mb4. Похоже, Symfony не определяет автоматически версию и базу данных.

Symfony 4 оставил стандартный utf8mb4 для MYSQL в файле конфигурации config/packages/doctrine.yaml. Этот файл конфигурации не следует забывать изменять на основе этих разрешенная конфигурация. Итак, проблема была устранена, когда я изменил значение

из

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

Кто хоть раз размещал отрицательное голосование. Будет полезно, если вы разместите свой комментарий. Почему мой ответ заслуживает голосования вместо того, чтобы молча убегать.

Bikal Basnet 24.09.2018 06:58

Не вижу причин для отрицательных голосов, поэтому я даю вам положительные голоса ;-) Кстати: вы можете добавить кодировку к DATABASE_URL внутри .env следующим образом: DATABASE_URL = "pgsql://postgres:password@db:5432/a_db?charset‌​=UTF-8 Похоже, это нигде не задокументировано, поэтому я открыл этот github.com/symfony/symfony-docs/pull/10410

Thomas Landauer 28.09.2018 00:44

Я считаю, что default_table_options лучше всего удалить, чтобы настройки базы данных по умолчанию контролировали эти настройки, а не Doctrine. Однако utf8_unicode_ci является эксклюзивным для MySQL и недоступен для PostgreSQL, который использует en_US.UTF-8, как в Доктрина DBAL тест.

Will B. 15.05.2019 07:50

Мне помогло добавить кодировку в URL-адрес базы данных, например:

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

Хотя эта проблема возникла только в APP_ENV=prod.

Другие вопросы по теме