有时候,当通过python shell或python脚本从数据库中获取数据时,python进程就会死掉,并且会向终端打印一个单词:Killed
这就是它所说的一切。它只发生在某些脚本上,但它总是发生在那些脚本上。它一直发生在这个需要一段时间才能运行的单个查询中,以及一个向数据库逐个添加一堆行的南迁移。
我最初的预感是单笔交易花了太长时间,所以我为Postgres开启了自动提交。没有解决问题。
我检查了Postgres日志,这是唯一的东西:
2010-08-19 22:06:34 UTC LOG: could not receive data from client: Connection reset by peer
2010-08-19 22:06:34 UTC LOG: unexpected EOF on client connection
我已经尝试使用谷歌搜索,但正如您所料,一个单词错误消息很难谷歌。
我在单个Ubuntu 10.4机架式云VPS上使用带有Postgres 8.4的Django 1.2,用于所有内容的库存配置。
答案 0 :(得分:6)
我能想到的只有一件事会自动杀死Linux上的进程--OOM杀手。系统日志中有什么?
答案 1 :(得分:0)
如果正在使用psycopg,问题可能是数据库连接未被关闭。
根据psycopg docs示例:
# Connect to an existing database
>>> conn = psycopg2.connect("dbname=test user=postgres")
# Open a cursor to perform database operations
>>> cur = conn.cursor()
# Close communication with the database
>>> cur.close()
>>> conn.close()
请注意,如果确实删除了连接(使用dbcon.close()
或删除了连接对象,则可能需要发出提交或回滚,具体取决于您的连接所处的事务类型。
有关详细信息,请参阅the close connection docs。