Postgresql SQLSTATE [22021]: Символ не входит в репертуар: Ö - PullRequest
0 голосов
/ 05 февраля 2019

Этот вопрос задавался много раз, но у меня не получилось никакого решения, у меня есть этот кусок кода:

Changes::$change['text'] = $data->employee->emp_first_name . ", " . $data->employee->emp_last_name . " in Woche " .  $data->employee->week . " gelöscht <br>";
Changes::$change['user'] = $data->user->name;
$date = date_create();
$changeLogSql = utf8_encode("INSERT INTO change_log (date, name, change, affected_table) VALUES (now(), '". Changes::$change['user'] ."', '". Changes::$change['text'] ."', '" . Changes::$change['table'] . "')");
$fetched[0]['debug'] = $changeLogSql;
$result = $pdo->query($changeLogSql);

Без utf8_encode Иногда я получаю ошибку:

Postgresql SQLSTATE[22021]: Character not in repertoire: ERROR: invalid byte sequence for encoding "UTF8":

В этом Insert проблема в ö в gelöscht.Это можно исправить самостоятельно, но некоторые имена также содержат символ ö и приводят к той же ошибке последовательности байтов.

В моем тестовом окружении он работает нормально, только на производственной стороне возникает ошибка.Оба используют potsgresql 9.6.

Есть идеи, как заставить это работать без utf8_encode?При этом он выглядит как «Ã liket» в моей базе данных.

enter image description here

Небольшое дополнение в том же файле php Я также вставляю те же именабез проблем в разных таблицах (без кодирования).Проблема возникает только в этом утверждении.Все поля имени определены как текст или varchar.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...