我的django项目有一个工作的管理页面,但突然间我开始收到:
每当我尝试访问管理页面时"Unknown column 'django_content_type.name' in 'field list'"
。我仍然可以访问管理员的某些部分,而不是主页。
我对django和python很新,所以我不知道在哪里看。
这里有完整的错误:
InternalError at /admin/
(1054, u"Unknown column 'django_content_type.name' in 'field list'")
Request Method: GET
Request URL: http://127.0.0.1:8000/admin/
Django Version: 1.7.7
Exception Type: InternalError
Exception Value:
(1054, u"Unknown column 'django_content_type.name' in 'field list'")
Exception Location: c:\Python27\lib\site-packages\pymysql\err.py in _check_mysql_exception, line 115
Python Executable: c:\Python27\python.exe
Python Version: 2.7.9
Python Path:
['c:\\users\\dhysong\\Documents\\School\\CS6310\\Project4\\CS6310',
'C:\\Windows\\system32\\python27.zip',
'c:\\Python27\\DLLs',
'c:\\Python27\\lib',
'c:\\Python27\\lib\\plat-win',
'c:\\Python27\\lib\\lib-tk',
'c:\\Python27',
'c:\\Python27\\lib\\site-packages']
Server time: Thu, 9 Apr 2015 08:17:05 -0400
第63行出现html错误:
In template c:\Python27\lib\site-packages\django\contrib\admin\templates\admin\index.html, error at line 63
1054
53 <div id="content-related">
54 <div class="module" id="recent-actions-module">
55 <h2>{% trans 'Recent Actions' %}</h2>
56 <h3>{% trans 'My Actions' %}</h3>
57 {% load log %}
58 {% get_admin_log 10 as admin_log for_user user %}
59 {% if not admin_log %}
60 <p>{% trans 'None available' %}</p>
61 {% else %}
62 <ul class="actionlist">
63 {% for entry in admin_log %}
64 <li class="{% if entry.is_addition %}addlink{% endif %}{% if entry.is_change %}changelink{% endif %}{% if entry.is_deletion %}deletelink{% endif %}">
65 {% if entry.is_deletion or not entry.get_admin_url %}
66 {{ entry.object_repr }}
67 {% else %}
68 <a href="{{ entry.get_admin_url }}">{{ entry.object_repr }}</a>
69 {% endif %}
70 <br/>
71 {% if entry.content_type %}
72 <span class="mini quiet">{% filter capfirst %}{% trans entry.content_type.name %}{% endfilter %}</span>
73 {% else %}
答案 0 :(得分:10)
我刚才遇到了同样的问题,它与不同版本的django有关。我使用pip install -U Django将我项目中工作的所有机器更新到django 1.8,之后一切正常。
答案 1 :(得分:5)
我们的MySQL修复程序是 drop table django_content_type;
来自karthikr和moonchel的笔记引导我解决问题。 1054安装后发生未知的列错误 Django 1.8成为一个virtualenv尝试它,然后尝试 在不同的virtualenv中使用预先存在的Django 1.6。 MySQL搞砸了。
Django 1.7 / 1.8 syncdb修改了django_content_type表 从中删除“名称”列。
+-----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| app_label | varchar(100) | NO | MUL | NULL | |
| model | varchar(100) | NO | | NULL | |
+-----------+--------------+------+-----+---------+----------------+
Django 1.6 syncdb creates the table with the 'name' column:
+-----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(100) | NO | | NULL | |
| app_label | varchar(100) | NO | MUL | NULL | |
| model | varchar(100) | NO | | NULL | |
+-----------+--------------+------+-----+---------+----------------+
所以删除表并让syncdb根据Django版本的需要重新创建它。
如果对放下它感到紧张,请进行转储:mysqldump -u <mysqladminname> -p <databasename> django_content_type > /tmp/django_content_type.dmp
答案 2 :(得分:1)
它不是django错误,它是MySQL。我刚开始一个项目,但是将django版本从1.8改为1.7并且出现了这个错误。所以,我droped所有表并运行迁移。但是你不需要丢弃所有表格,只是一部分,可能只是一个。
答案 3 :(得分:1)
在一个庞大的框架中,大约45个Django应用程序和12个ReactJS应用程序遇到了同样的问题;让我们看一下解决我的情况的代码:
1-首先安装django软件包,这些软件包通常会增加您对manage.py和django的本机命令选项;除了尝试通过将django升级到新版本来重新安装--->
***"pip install -U django django-rest-framework-tricks django-shortcuts django-admin-shortcuts django_extensions";***
2-详细阅读错误时,我意识到一些.pyc和 init 文件已链接到该事实,因此在主项目目录中执行“ manage.py”文件所在的位置;我们将清理,保证许可权并取消链接到银行的所有可能干扰框架的部分的链接:
***"./manage.py clean_pyc", "./manage.py clear_cache", "./manage.py update_permissions", ". /manage.py clearsessions "***
3-如果仍然存储了高速缓存或临时执行文件,则仍位于“ manage.py”文件所在的目录中,无论出于任何原因都不会删除;执行命令以强制消除可能干扰框架的这些文件:
***"sudo find. -name '* __ pycache__' -exec rm -rf {} + && \
sudo python manage.py makemigrations && \
sudo find. -path "* / migrations / *. py" -not -name "__init__.py" -delete && \
sudo find. -path "* / migrations / *. pyc" -delete; "***
4-最后是一个很棒但非常出色的命令,可以迫使模型和视图与框架和数据库重新建立索引;以我的情况为例,我将以SAO(GUI_CUBE_X和BUI_CUBE_Y)为例,输入您的应用程序名称;您可以输入多少,这没关系,但是在两个步骤中使用了q,必须在两个过程中复制名称才能工作:
***"
./manage.py makemigrations && \
./manage.py migrate --fake GUI_CUBE_X zero && \
./manage.py migrate --fake GUI_CUBE_Y zero && \
./manage.py showmigrations && \
./manage.py makemigrations && \
./manage.py migrate --fake GUI_CUBE_X && \
./manage.py migrate --fake GUI_CUBE_Y && \
./manage.py makemigrations && \
./manage.py migrate && \
./manage.py collectstatic --clear --force-color --no-input;
systemctl restart uwsgi;
systemctl restart nginx;
"***
5-再次测试您的应用程序
"./manage.py runserver 0.0.0.0:8080"
...成功!!!我们准备继续表演伙计大声笑!!!
Enviar反馈 历史学家 萨尔瓦斯 社区
答案 4 :(得分:0)
由两个不同版本的Django安装引起。当我在本地安装Django1.7和在virtualenv中安装了1.8时出现错误。
pip uninstall django
对于本地版本,然后从manage.py runserver
内重新启动virtualenv
为我修复了错误。
答案 5 :(得分:0)
如果您在本地和虚拟环境中安装了Django,请确保已激活虚拟环境。
答案 6 :(得分:0)