Operational Error No such table Django
Question: Hi I am doing the djangogirls tutorial and have come across the
OperationalError no such table: blog_post. This works perfect on my virtual
environment, but I get the OperationalError after pushing to heroku.

I am using Django 1.7.7. More information on the error is available at:
<https://girlsblog.herokuapp.com/>

I have done `python manage.py makemigrations python manage.py migrate`
initially in the beginning of the tutorial. Then I attempted to do it again
and there are "No changes detected" and "No migrations to make"

This is my post_list.html

    
    
    {% extends 'blog/base.html' %}
    
    {% block content %}
        {% for post in posts %}
            <div class="post">
                <div class="date">
                    {{ post.published.date }}
                </div>
                <h1><a href="{% url 'blog.views.post_detail' pk=post.pk %}">{{ post.title }}</a></h1>
                <p> {{ post.text|linebreaks }}</p>
            </div>
        {% endfor %}
    {% endblock content %}
    

This is my .gitignore

    
    
    myvenv
    __pycache__
    staticfiles
    local_settings.py
    db.sqlite3
    

Models.py

    
    
    from django.db import models
    from django.utils import timezone
    
    # Create your models here.
    
    class Post(models.Model):
        author = models.ForeignKey('auth.User')
        title = models.CharField(max_length=200)
        text = models.TextField()
        created_date = models.DateTimeField(
                default=timezone.now)
        published_date = models.DateTimeField(
                blank=True, null=True)
    
        def publish(self):
            self.published_date = timezone.now()
            self.save()
    
        def __str__(self):
            return self.title
    

Settings.py

    
    
    """
    Django settings for mysite project.
    
    For more information on this file, see
    https://docs.djangoproject.com/en/1.7/topics/settings/
    
    For the full list of settings and their values, see
    https://docs.djangoproject.com/en/1.7/ref/settings/
    """
    
    # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
    import os
    BASE_DIR = os.path.dirname(os.path.dirname(__file__))
    
    
    # Quick-start development settings - unsuitable for production
    # See https://docs.djangoproject.com/en/1.7/howto/deployment/checklist/
    
    # SECURITY WARNING: keep the secret key used in production secret!
    SECRET_KEY = '1l8)#&q8r_wwev1r9mm8q5ezz8p#)rvg(l4%(t^-t8s4bva2+r'
    
    # SECURITY WARNING: don't run with debug turned on in production!
    DEBUG = True
    
    TEMPLATE_DEBUG = True
    
    ALLOWED_HOSTS = []
    
    
    # Application definition
    
    INSTALLED_APPS = (
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'blog',
    )
    
    MIDDLEWARE_CLASSES = (
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.common.CommonMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
    )
    
    ROOT_URLCONF = 'mysite.urls'
    
    WSGI_APPLICATION = 'mysite.wsgi.application'
    
    
    # Database
    # https://docs.djangoproject.com/en/1.7/ref/settings/#databases
    
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        }
    }
    
    # Internationalization
    # https://docs.djangoproject.com/en/1.7/topics/i18n/
    
    LANGUAGE_CODE = 'en-us'
    
    TIME_ZONE = 'America/Chicago'
    
    USE_I18N = True
    
    USE_L10N = True
    
    USE_TZ = False
    
    
    # Static files (CSS, JavaScript, Images)
    # https://docs.djangoproject.com/en/1.7/howto/static-files/
    
    STATIC_URL = '/static/'
    
    import dj_database_url
    DATABASES['default'] = dj_database_url.config()
    
    SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
    
    ALLOWED_HOSTS = ['*']
    
    STATIC_ROOT = 'staticfiles'
    
    DEBUG = False
    
    try:
        from .local_settings import *
    except ImportError:
        pass
    
    STATICFILES_DIRS = (
        os.path.join(BASE_DIR, "static"),
    )
    

blog/views.py

    
    
    from django.shortcuts import render, get_object_or_404
    from django.utils import timezone
    from .models import Post
    from .forms import PostForm
    
    # Create your views here.
    
    def post_list(request):
        posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
        return render(request, 'blog/post_list.html', {'posts': posts})
    
    def post_detail(request, pk):
        post = get_object_or_404(Post, pk=pk)
        return render(request, 'blog/post_detail.html', {'post': post})
    
    def post_new(request):
        form = PostForm()
        return render(request, 'blog/post_edit.html', {'form': form})
    

I am really new to this, so please forgive "simple" mistakes.


Answer: Old post, but does not appeared to be answered so I'll take a shot. I was led
here via google after having a similar problem.

This issue is probably a missing database on the heroku side. If you are
pushing via git, and db.sqlite3 is in your .gitignore, it definitely will be
missing there and will need to be created there. This was exactly my issue
when fiddling with a pre-made example (where the db had not yet been created).

    
    
    $ python manage.py migrate
    

on your heroku environment should fix it.

