Django:OperationalError没有这样的表 [英] Django: OperationalError No Such Table

查看:112
本文介绍了Django:OperationalError没有这样的表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我使用Django-CMS的Django项目中,我正在构建一个相当简单的应用程序,研究。 (这是我在项目/应用中的第一次尝试。)主要目的是存储研究人员编写的各种知识资产(即文章,书籍等)。



问题是当我将浏览器指向/ research /时,我收到一个错误,表示research_journal表不存在(no such table)



我正在使用Djnago 1.6.5与sqlite3数据库。



查看 python manage.py sql research yield:

  BEGIN; 
CREATE TABLEresearch_researchbase(
idinteger NOT NULL PRIMARY KEY,
pub_datedatetime NOT NULL,
authorsvarchar(200)NOT NULL,
yearvarchar(25)NOT NULL,
titlevarchar(200)NOT NULL,
subtitlevarchar(200)NOT NULL,
image_idinteger NOT NULL参考filer_image(file_ptr_id),
linkvarchar(200)NOT NULL

;
CREATE TABLEresearch_journal(
researchbase_ptr_idinteger NOT NULL PRIMARY KEY参考research_researchbase(id),
journalvarchar(200)NOT NULL,
abstracttext NOT NULL,
citationvarchar(200)NOT NULL

;
CREATE TABLEresearch_encyclopedia_chapter(
researchbase_ptr_idinteger NOT NULL PRIMARY KEY REFERENCESresearch_researchbase(id),
encyclopediavarchar(200)NOT NULL,
publishervarchar(200)NOT NULL,
summaryvarchar(200)NOT NULL

;
CREATE TABLEresearch_book(
researchbase_ptr_idinteger NOT NULL PRIMARY KEY参考research_researchbase(id),
publishervarchar(200)NOT NULL,
summaryvarchar(200)NOT NULL

;

COMMIT;

我已经运行 python manage.py migrate research 并得到:

  /Users/XXX/Documents/repos/sfs/env/lib/python2.7/site- packages / app_data / fields.py:2:DeprecationWarning:django.utils.simplejson已弃用;使用json代替。 
从django.utils import simplejson as json

运行迁移进行研究:
- 没有任何迁移。
- 加载研究的初始数据。
从0个夹具中安装0个对象

我已经运行 python manage.py syncdb 并获得以下内容:

 同步... 
创建表...
安装自定义SQL ...
安装索引...
从0个夹具中安装0个对象

同步:
> djangocms_admin_style
> django.contrib.auth
> django.contrib.contenttypes
> django.contrib.sessions
> django.contrib.admin
> django.contrib.sites
> django.contrib.sitemaps
> django.contrib.staticfiles
> django.contrib.messages
> mptt
>南
> sekizai
> django_select2
> hvad

未同步(使用迁移):
- djangocms_text_ckeditor
- cms
- 菜单
- djangocms_style
- djangocms_column
- djangocms_file
- djangocms_flash
- djangocms_googlemap
- djangocms_inherit
- djangocms_link
- djangocms_picture
- djangocms_teaser
- djangocms_video
- 还原
- polls
- djangocms_polls
- aldryn_blog
- easy_thumbnails
- filer
- taggit
- research
(use ./ manage.py迁移以迁移这些)

这是models.py:

从django.db导入模型
从django.utils导入时区
从filer.fields.image import FilerImageField

import datetime

class ResearchBase(models.Model):
pub_date = models.DateTimeField('date published')
authors = models.CharField(max_length = 200)
year = models.CharField(max_length = 25)
title = models.CharField(max_length = 200)
subtitle = models.CharField(max_length = 200,blank = True)
image = FilerImageField()
link = models.CharField(max_length = blank = True)

def __unicode __(self):
return self.title

def was_published_recently(self):
return self.pub_date> = timezone.now() - datetime.timedelta(days = 1)


类日志(ResearchBase):
journal = models.CharField(max_length = 200)
abstract = models.TextField()
citation = models.CharField(max_length = 200)


class Encyclopedia_Chapter(ResearchBase):
encyclopedia = models.CharField max_length = 200)
publisher = models.CharField(max_length = 200)
summary = models.CharField(max_length = 200)


class Book(ResearchBase)
publisher = models.CharField(max_length = 200)
summary = models.CharField(max_length = 200)

这里' s我的views.py(注意,我通过渲染传递两个对象,忽略了我还没有在整个交易中包含类图书的事实):



<$ p $从django.shortcuts导入render,get_object_or_404
从django.http导入HttpResponse,Http404
从django.template导入RequestContext,加载器

从研究$ mod_index(request):
latest_journal_list = Journal.objects.order_by(' - pub_date')[:5]
latest_chapter_list = Encyclopedia_Chapter .objects.order_by(' - pub_date')[:5]

context = {
'latest_journal_list':latest_journal_list,
'latest_chapter_list':latest_chapter_list
}

return render(request,'research / index.html',context)

def journal_detail(request,journal_id):
journal = get_object_or_404(Journal,pk = journal_id)
return render(request,'res earch / journal_detail.html',{'journal':journal})

def chapter_detail(request,chapter_id):
chapter = get_object_or_404(Encyclopedia_Chapter,pk = chapter_id)
return render(request,'research / chapter_detail.html',{'chapter':chapter})

应用程序的url.py:

 从django.conf.urls导入模式,url 

从研究导入视图

urlpatterns = patterns('',
url(r'^ $',views.research_index,name ='research'),
url(r'^ ?p url(r'^(?P< chapter_id> \d +)/ $',views.chapter_detail ,name ='chapter_detail'),

这是index.html模板: / p>

  {%extends'research / base.html'%} 

{%block research_content%}

< div class =container>
< div class =row featurette>
< h3 id =research>同行评议的期刊文章< / h3>
{%if latest_journal_list%}
< ul id =research>
{%for journal in latest_journal_list%}
< li id =research>
< img src ={{journal.image.url}}id =research>
< h4> {{journal.journal}}< / h4>
< h5> {{journal.title}}< / h5>
< a href ={%url'research:journal_detail'journal.id%}>阅读更多< / a>
< / li>
{%endfor%}
< / ul>
{%else%}
< p>没有可用的期刊。< / p>
{%endif%}
< / div>

< div class =row featurette>
< h3 id =research> Encyclopedia Chapters< / h3>
{%if latest_chapter_list%}
< ul id =research>
{%for chapter in latest_chapter_list%}
< li id =research>
< img src ={{chapter.image.url}}id =research>
< h4> {{chapter.journal}}< / h4>
< h5> {{chapter.title}}< / h5>
< a href ={%url'research:chapter_detail'chapter.id%}>阅读更多< / a>
< / li>
{%endfor%}
< / ul>
{%else%}
< p>没有百科全书章可用。< / p>
{%endif%}
< / div>
< / div>

{%endblock%}

为了防万一重要,这是我的cms_app.py:

  from cms.app_base import CMSApp 
from cms.apphook_pool import apphook_pool
from django .utils.translation import ugettext_lazy as _


class ResearchApp(CMSApp):
name = _(Research App)
urls = [research.urls ]
app_name =research

apphook_pool.register(ResearchApp)


$ b $想法?任何帮助将不胜感激。

解决方案

看起来我的迁移有问题。



我运行 ./ manage.py schemamigration research --auto ,发现许多字段没有指定默认值。 p>

所以,我运行 ./ manage.py schemamigration research --init ,后跟 ./ manage.py迁移研究



从那里重新运行服务器做了诀窍!


I'm building a fairly simple application, research, in my Django project that uses Django-CMS. (It's my first ground-up attempt at a project/application.) It's main purpose is to store various intellectual assets (i.e article, book, etc. written by a researcher).

The problem is that when I point the browser to /research/ I get an error saying that the table 'research_journal' doesn't exist ("no such table").

I'm using Djnago 1.6.5 with a sqlite3 database.

Looking at python manage.py sql research yields:

BEGIN;
CREATE TABLE "research_researchbase" (
    "id" integer NOT NULL PRIMARY KEY,
    "pub_date" datetime NOT NULL,
    "authors" varchar(200) NOT NULL,
    "year" varchar(25) NOT NULL,
    "title" varchar(200) NOT NULL,
    "subtitle" varchar(200) NOT NULL,
    "image_id" integer NOT NULL REFERENCES "filer_image" ("file_ptr_id"),
    "link" varchar(200) NOT NULL
)
;
CREATE TABLE "research_journal" (
    "researchbase_ptr_id" integer NOT NULL PRIMARY KEY REFERENCES "research_researchbase" ("id"),
    "journal" varchar(200) NOT NULL,
    "abstract" text NOT NULL,
    "citation" varchar(200) NOT NULL
)
;
CREATE TABLE "research_encyclopedia_chapter" (
    "researchbase_ptr_id" integer NOT NULL PRIMARY KEY REFERENCES "research_researchbase" ("id"),
    "encyclopedia" varchar(200) NOT NULL,
    "publisher" varchar(200) NOT NULL,
    "summary" varchar(200) NOT NULL
)
;
CREATE TABLE "research_book" (
    "researchbase_ptr_id" integer NOT NULL PRIMARY KEY REFERENCES "research_researchbase" ("id"),
    "publisher" varchar(200) NOT NULL,
    "summary" varchar(200) NOT NULL
)
;

COMMIT;

I've run python manage.py migrate research and get:

/Users/XXX/Documents/repos/sfs/env/lib/python2.7/site-packages/app_data/fields.py:2: DeprecationWarning: django.utils.simplejson is deprecated; use json instead.
  from django.utils import simplejson as json

Running migrations for research:
- Nothing to migrate.
 - Loading initial data for research.
Installed 0 object(s) from 0 fixture(s)

I've run python manage.py syncdb and get the following:

Syncing...
Creating tables ...
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)

Synced:
 > djangocms_admin_style
 > django.contrib.auth
 > django.contrib.contenttypes
 > django.contrib.sessions
 > django.contrib.admin
 > django.contrib.sites
 > django.contrib.sitemaps
 > django.contrib.staticfiles
 > django.contrib.messages
 > mptt
 > south
 > sekizai
 > django_select2
 > hvad

Not synced (use migrations):
 - djangocms_text_ckeditor
 - cms
 - menus
 - djangocms_style
 - djangocms_column
 - djangocms_file
 - djangocms_flash
 - djangocms_googlemap
 - djangocms_inherit
 - djangocms_link
 - djangocms_picture
 - djangocms_teaser
 - djangocms_video
 - reversion
 - polls
 - djangocms_polls
 - aldryn_blog
 - easy_thumbnails
 - filer
 - taggit
 - research
(use ./manage.py migrate to migrate these)

Here's the models.py:

from django.db import models
from django.utils import timezone
from filer.fields.image import FilerImageField

import datetime

class ResearchBase(models.Model):
    pub_date = models.DateTimeField('date published')
    authors = models.CharField(max_length=200)
    year = models.CharField(max_length=25)
    title = models.CharField(max_length=200)
    subtitle = models.CharField(max_length=200, blank=True)
    image = FilerImageField()
    link = models.CharField(max_length=200, blank=True)

    def __unicode__(self):
        return self.title

    def was_published_recently(self):
        return self.pub_date >= timezone.now() - datetime.timedelta(days=1)


class Journal(ResearchBase):
    journal = models.CharField(max_length=200)
    abstract = models.TextField()
    citation = models.CharField(max_length=200)


class Encyclopedia_Chapter(ResearchBase):
    encyclopedia = models.CharField(max_length=200)
    publisher = models.CharField(max_length=200)
    summary = models.CharField(max_length=200)


class Book(ResearchBase):
    publisher = models.CharField(max_length=200)
    summary = models.CharField(max_length=200)

Here's my views.py (note that I am passing two objects through render, ignore the fact that I have yet to include the class Books in the whole deal):

from django.shortcuts import render, get_object_or_404
from django.http import HttpResponse, Http404
from django.template import RequestContext, loader

from research.models import Journal, Encyclopedia_Chapter, Book

def research_index(request):
    latest_journal_list = Journal.objects.order_by('-pub_date')[:5]
    latest_chapter_list = Encyclopedia_Chapter.objects.order_by('-pub_date')[:5]

    context = {
        'latest_journal_list': latest_journal_list,
        'latest_chapter_list': latest_chapter_list
    }

    return render(request, 'research/index.html', context)

def journal_detail(request, journal_id):
    journal = get_object_or_404(Journal, pk=journal_id)
    return render(request, 'research/journal_detail.html', {'journal': journal})

def chapter_detail(request, chapter_id):
    chapter = get_object_or_404(Encyclopedia_Chapter, pk=chapter_id)
    return render(request, 'research/chapter_detail.html', {'chapter': chapter})

Here's the application's url.py:

from django.conf.urls import patterns, url

from research import views

urlpatterns = patterns('',
    url(r'^$', views.research_index, name='research'),
    url(r'^(?P<journal_id>\d+)/$', views.journal_detail, name='journal_detail'),
    url(r'^(?P<chapter_id>\d+)/$', views.chapter_detail, name='chapter_detail'),
)

Here's the index.html template:

{% extends 'research/base.html' %}

{% block research_content %}

<div class="container">
    <div class="row featurette">
        <h3 id="research">Peer-reviewed Journal Articles</h3>
        {% if latest_journal_list %}
            <ul id="research">
            {% for journal in latest_journal_list %}
                <li id="research">
                            <img src="{{ journal.image.url }}" id="research">
                            <h4>{{ journal.journal }}</h4>
                            <h5>{{ journal.title }}</h5>
                            <a href="{% url 'research:journal_detail' journal.id %}">Read More</a>
                        </li>
            {% endfor %}
            </ul>
        {% else %}
            <p>No journals are available.</p>
        {% endif %}
    </div>

    <div class="row featurette">
        <h3 id="research">Encyclopedia Chapters</h3>
        {% if latest_chapter_list %}
            <ul id="research">
            {% for chapter in latest_chapter_list %}
                <li id="research">
                            <img src="{{ chapter.image.url }}" id="research">
                            <h4>{{ chapter.journal }}</h4>
                            <h5>{{ chapter.title }}</h5>
                            <a href="{% url 'research:chapter_detail' chapter.id %}">Read More</a>
                        </li>
            {% endfor %}
            </ul>
        {% else %}
            <p>No encyclopedia chapters are available.</p>
        {% endif %}
    </div>
</div>

{% endblock %}

Just in case it matters, here's my cms_app.py:

from cms.app_base import CMSApp
from cms.apphook_pool import apphook_pool
from django.utils.translation import ugettext_lazy as _


class ResearchApp(CMSApp):
    name = _("Research App")
    urls = ["research.urls"]
    app_name = "research"

apphook_pool.register(ResearchApp)

Thoughts? Any help would be greatly appreciated.

解决方案

It looks like there was an issue with my migration.

I ran ./manage.py schemamigration research --auto and found that many of the fields didn't have a default specified.

So, I ran ./manage.py schemamigration research --init followed by ./manage.py migrate research

Rerunning the server from there did the trick!

这篇关于Django:OperationalError没有这样的表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆