繁体   English   中英

PostgreSQL libpq无缘无故地插入空行

[英]postgresql libpq inserting empty row for no reason

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

*我想指出的是,这在Mysql上不会发生,仅在Postgresql上会发生

请参阅Milen A. Radev的评论。 它应该是一个答案。 您不应该允许空行。

当然,至少一列可以具有一个约束,该约束将导致插入失败。 然后,您的应用程序可以打印/记录错误,并提供足够的诊断信息,以使您了解正在发生的情况以及在何种情况下。

在不对上述内容进行改进的情况下,确定是否已正确插入队列中的所有数据,或者是否缺少某些行。 即,查看是否将某些行转换为空插入。 如果您发现某些数据是造成此问题的原因,则可以找到问题数据的共同点。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM