PostgreSQL: журнал запросов только при ошибке - PullRequest
1 голос
/ 24 февраля 2010

Я получаю сообщение об ошибке: «Неверная последовательность байтов для кодировки« UTF8 »: 0x9f

Хорошо, теперь я знаю, что где-то мое php-приложение пытается выполнить запрос, используя этот символ 0x9f. Но я понятия не имею, ГДЕ.

Я проверил postgresql.conf, но не нашел ничего похожего на «log_on_error». Есть только параметр log_statement, который заставляет postgres регистрировать все выборки или только все запросы. Но то, что я хотел бы видеть, это:

ERROR: "Invalid byte sequence for encoding "UTF8": 0x9f
QUERY: SELECT * FROM blabla WHERE field1='blabla0x9f'

В этом случае я смогу увидеть, какой запрос вызвал это. Так что я знаю, какой PHP-скрипт проверять.

Возможно ли это с postgres? Моя версия PSQL 8.3.9.

Ответы [ 2 ]

2 голосов
/ 25 февраля 2010

Вы ищете log_min_error_statement для этого.

Но «недопустимая последовательность байтов» появляется в синтаксическом анализаторе еще до того, как текст будет проанализирован в операторе. Так что нет способа записать это, не рискуя записать его в странной кодировке и сделать его бесполезным или опасным.

Но, возможно, ваше PHP-приложение обнаружит ошибку? Если нет, то вы не проверяете достаточно кодов возврата там;)

1 голос
/ 02 марта 2010

Просто для ясности, потому что я не думаю, что Магнус справляется (хотя его ответ довольно хорош): Если вы прочитаете файл в UTF-8, но он закодирован в латинице магически не конвертируется в utf8. Вы можете работать только с файлом в кодировке файла, независимо от того, отправляете ли вы его в базу данных или перекодируете его в другую кодировку. У вас есть три варианта (которые я мог бы использовать):

Конечно, самый правый путь - первый.

  1. Конвертируйте файл, используя php . Прочитайте документы по перекодированию для получения дополнительной информации об этом.

  2. Измените client_encoding на postgresql, используя set client_encoding = encoding. Вы можете найти действительную кодировку в документации

  3. Отправьте его на конвертацию в postgresql Прочитайте документы по конвертированию в PostgresSQL ()

Информация о перекодировании функции php `

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