Я сейчас звоню qInstallMsgHandler()
перенаправить все ошибки Qt, предупреждения и отладки в мой собственный обработчик сообщений.
Это работает в 99% случаев, но при выполнении операторов SQL через объект QSqlQuery я по-прежнему получаю следующий вывод в stderr:
**WARNING: nonstandard use of \\ in a string literal
LINE 1: EXECUTE qpsqlpstmt_11 ('<?xml version=''1.0'' encoding=''U
HINT: Use the escape string syntax for backslashes, e.g., E'\\'.**
База данных — PostgresSQL версии 8.4. Любые идеи, как я могу также перехватить и перенаправить это предупреждение?
Кажется, что некоторая библиотека PostgreSQL, которая используется драйвером Qt, пишет в stderr
,
Ян может перенаправить stderr
как это:
freopen("my_log.txt", "w", stderr);
Для других с такой же проблемой вы можете отключить предупреждение с помощью этого кода:
QSqlQuery query(db);
query.exec("SET standard_conforming_strings TO true");
Но, к сожалению, это означает, что проблема скрыта от вызывающей стороны, и обратные слеши автоматически удаляются в базе данных, что может вызвать проблемы при получении данных позже.