Не могу импортировать символ в моей базе данных Postgres - LC_COLLATE не UTF-8 - PullRequest
0 голосов
/ 07 октября 2019

У меня проблемы с импортом данных в мою базу данных postgreSQL, конечно, из-за кодировки. Вот что у меня есть:

Возникла исключительная ситуация при выполнении 'INSERT INTO table (id, name) VALUES (?,?)' С параметрами [574, "\ xf3"]:

SQLSTATE [22021]: Персонаж не входит в репертуар: 7 ERREUR: последовательность действий инвалида для кодировки «UTF8»: 0xf3

Видимо, кодируется символ ò, закодированный \xf3эта ошибка.

Когда я создаю свою базу данных Postgresql 11.5 с помощью команды:

php bin/console doctrine:database:create

со следующей конфигурацией доктрины и добавлением 3 последних строк

doctrine:
    dbal:
        driver: pdo_pgsql
        url: '%env(resolve:DATABASE_URL)%'
        default_table_options:
            charset: utf8
            collate: utf8_unicode_ci

У меня все та же ошибка. И в моем интерфейсе pgAdmin я вижу, что моя БД является init со следующим SQL:

CREATE DATABASE db
    WITH 
    OWNER = postgres
    ENCODING = 'UTF8'
    LC_COLLATE = 'French_France.1252'
    LC_CTYPE = 'French_France.1252'
    TABLESPACE = pg_default
    CONNECTION LIMIT = -1;

Очевидно, LC_COLLATE и LC_TYPE установлены неправильно.

И когда япопробуйте создать мою базу данных из pgAdmin. В выпадающих списках не предлагается utf8 .

И через командную строку она создает базу данных, но, похоже, не может найти правильную кодировку, так какесли символьный тип utf8 не был установлен (извините, все сообщения об ошибках по-французски):

postgres = # CREATE DATABASE "db" WITH OWNER = "postgres" ENCODING = 'UTF8' LC_COLLATE = 'fr_FR.utf8 'LC_CTYPE =' fr_FR.utf8 'ШАБЛОН template0;

ВНИМАНИЕ: нет определений в кодировке локали «fr_FR.utf8»: кодовый набор «CPutf8»

ВНИМАНИЕ: детерминант для кодировки «fr_FR.utf8»: кодовый набор «CPutf8»

И я также пытаюсь использовать utf8_encode() php метод, но он ничего не сделал.

$entity->setName(utf8_encode($row['name']));

кто-нибудь как нибудь подскажет?

...