内部错误:当前事务已中止,命令在事务块结束前被忽略
我在使用多进程库进行数据库操作时,遇到了这个错误。
访问链接: Pastie
内部错误:当前事务已中止,命令在事务块结束之前被忽略
这是在使用 psycopg2
驱动连接 Postgre 数据库,配合 web.py
使用的。
不过,如果我用 threading.Thread
代替 multiprocessing.Process
,就不会出现这个错误。
有没有人知道怎么解决这个问题?
1 个回答
9
在UNIX系统上,multiprocessing这个功能是通过复制当前的进程来工作的。如果你已经有一个数据库连接,这样做会让当前进程和新创建的进程都共享同一个数据库连接。这样同时使用这个连接是不好的做法。你应该在新进程里创建一个新的数据库连接。