接口错误 (0, '')

63 投票
10 回答
71734 浏览
提问于 2025-04-16 21:15

我用Django搭建了一个网站,但在执行查询时遇到了一个很烦人的错误。

如果我重启Apache服务器,这个错误会暂时消失。

Traceback:
File "/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
100.                     response = callback(request, *callback_args, **callback_kwargs)
File "/home/fran/cron/views/set_caches.py" in set_caches
24.         cursor.execute(query, [category['id']])
File "/usr/local/lib/python2.7/site-packages/django/db/backends/util.py" in execute
15.             return self.cursor.execute(sql, params)
File "/usr/local/lib/python2.7/site-packages/django/db/backends/mysql/base.py" in execute
86.             return self.cursor.execute(query, args)
File "build/bdist.linux-i686/egg/MySQLdb/cursors.py" in execute
155.         charset = db.character_set_name()

Exception Type: InterfaceError at /blablabla/
Exception Value: (0, '')

10 个回答

5

我同意Moberg的看法。这个错误发生在我们尝试在关闭数据库连接后再去访问数据库。这可能是因为代码缩进不正确导致的。下面是我的代码。

conn = connect()
cur = conn.cursor()
tk = get_tickers(cur)
for t in tk:
    prices = read_price(t, cur)
    if prices != None:
        update_price(t, cur)
        print 'Price after update of ticker ', t, ':'
        p_open, p_high, p_low, p_close = read_price(t, cur)
        print p_open, p_high, p_low, p_close
    else:
        print 'Price for ', t, ' is not available'
    conn.close()

我遇到了和Marian一样的错误。在把conn.close()的缩进调整好之后,一切就正常了。确认全局的conn没有问题。

53

当你调用了 db.close() 这个命令后,如果再想访问数据库却没有重新建立连接,就会出现这个错误。你需要检查一下,是否在不该关闭数据库连接的时候把它关掉了。

77

这是因为使用了全局游标。你可以尝试在每个需要执行原始查询的方法里创建和关闭游标。

cursor = connection.cursor()
cursor.execute(query)
cursor.close()

撰写回答