postgresql libpq无缘无故地插入空行

时间:2009-05-19 21:40:07

标签: c++ c database postgresql

我正在使用C中的libpq库来访问我的Postgresql数据库。应用程序插入从队列馈送的数据。当有大量数据并且插入速度非常快时,它会随机插入并将空行放入表中。在我执行插入之前,我检查以确保插入的文本的长度大于1。这是随机发生的原因吗?当数据较少时,它不会发生。

*我想注意,这不会发生在Mysql上,只有Postgresql

1 个答案:

答案 0 :(得分:1)

见Milen A. Radev的评论。应该是一个答案。你不应该允许空行。

当然至少有一列可能有一个会导致插入失败的约束。然后,您的应用程序可以使用足够的诊断信息打印/记录错误,以便您了解正在发生的情况以及在什么条件下。

如果不对上述内容进行改进,请确定是否正确插入了队列中的所有数据,或者是否缺少某些行。即,查看是否有一些行被转换为空插入。如果您发现某些数据导致此问题,您可以找到问题数据的共同点。

您是使用准备好的参数化插入,还是每次都在构建SQL插入语句字符串并执行它?如果要构建要执行的SQL字符串,则必须确保使用libpq提供的例程正确引用字符/二进制字符串列。或者切换到准备插入的另一种方法,并将数据作为参数传递给libpq本身正确引用。这也可以提高性能。