我目前正在调用qInstallMsgHandler()
将所有Qt错误,警告和调试输出重定向到我自己的消息处理程序。
99%的时间可以正常工作但是当通过QSqlQuery对象执行SQL语句时,我仍然得到以下输出到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。我有什么想法可以拦截和重定向这个警告吗?
答案 0 :(得分:1)
Qt驱动程序正在使用的一些PostgreSQL库似乎写入stderr
。
Yan可以像这样重新stderr
:
freopen("my_log.txt", "w", stderr);
答案 1 :(得分:0)
对于具有相同问题的其他人,您可以使用以下代码禁用警告:
QSqlQuery query(db);
query.exec("SET standard_conforming_strings TO true");
但不幸的是,这意味着调用者隐藏了问题,并且数据库中的反斜杠会自动转义,这可能会在以后检索数据时出现问题。