内部错误:当前事务已中止,命令在事务块结束前被忽略

5 投票
1 回答
11549 浏览
提问于 2025-04-15 18:56

我在使用多进程库进行数据库操作时,遇到了这个错误。

访问链接: Pastie

内部错误:当前事务已中止,命令在事务块结束之前被忽略

这是在使用 psycopg2 驱动连接 Postgre 数据库,配合 web.py 使用的。

不过,如果我用 threading.Thread 代替 multiprocessing.Process,就不会出现这个错误。
有没有人知道怎么解决这个问题?

1 个回答

9

在UNIX系统上,multiprocessing这个功能是通过复制当前的进程来工作的。如果你已经有一个数据库连接,这样做会让当前进程和新创建的进程都共享同一个数据库连接。这样同时使用这个连接是不好的做法。你应该在新进程里创建一个新的数据库连接。

撰写回答