我在多处理应用程序中使用Postgres和psycopg2作为我的驱动程序。只有2个进程,我收到了这个错误(我已经尝试过8次,并且爆炸速度非常快)。
cursor.execute("SELECT EXISTS(SELECT * FROM users WHERE name='{0}');".format(name))
DatabaseError: error with no message from the libpq
LOG: unexpected EOF on client connection with an open transaction
谷歌搜索此错误消息没有任何帮助,因为有几个原因可以发生该错误。其他事务可能在其他进程上发生,但它们各自创建自己的数据库连接。我还在每个进程完成后关闭数据库连接,并在重新启动时重新连接。
我的理论是,有很多数据库命令同时发生,而且无论出于何种原因,postgres都不喜欢这样。我不确定如何解决这个问题,因为应用程序必须以这种方式运行。