6

当我运行服务器并尝试加载 Web 应用程序的本地版本时,在 Django 1.5.1(和 1.5.0)和 mysql 中引发以下 DatabaseError:

数据库错误在 /

在线程中创建的 DatabaseWrapper 对象只能在同一线程中使用。别名为“default”的对象是在线程 id 4365488128 中创建的,这是线程 id 140735183980896。

异常位置如下:

/Users/USERNAME/.envs/PROJECT_NAME/lib/python2.7/site-packages/django/db/backends/init .py在 validate_thread_sharing,第 154 行

这仅在第一页加载时发生。当我点击刷新时,Web 应用程序按预期加载。当我更改 Django/python 代码并且本地服务器需要重新验证时,错误返回。当这种情况发生时,第一次加载再次抛出 DatabaseError 并且后续加载再次没有。

这个问题只发生在我的 Django 1.5 项目上。我已经卸载了 mysql 并清除了位于 /usr/local/var/mysql 中的 mysql 二进制文件。全新安装 mysql 并没有解决这个问题。

此处讨论了类似的 DatabaseError 但我无法遵循他们的解决方案:

https://code.djangoproject.com/ticket/17998

我在这里不知所措,任何想法或专业知识将不胜感激。谢谢你。

4

2 回答 2

7

我在导入 django.* 之前通过猴子修补解决了这个问题:

import eventlet
eventlet.monkey_patch()

你明白我在这里使用线程。

于 2014-01-14T20:43:20.260 回答
1

这是针对 1.4 的,但问题的原因可能与您的相同:

https://bitbucket.org/akoha/django-digest/issue/10/conflict-with-global-databasewrapper

该帖子中有两种可能的解决方案,尽管两者似乎都是解决方法:

“我已经能够通过在 db.py 中注释掉 close_connection 来解决问题”

“一个肯定会奏效的修复方法是用 django.db.connection 和 django.db.tranasction 替换 MultiDb/get_default_db()/self.db,如下所示:https ://docs.djangoproject.com/en/dev/topics /db/sql/#executing-custom-sql-直接

于 2013-08-05T12:58:55.420 回答