Django OperationalError: нет такой колонки: на pythonanywhere - PullRequest
0 голосов
/ 20 декабря 2018

Сначала я смог исправить ошибку ImportError.Я понял, что это потому, что версия Django pythonanywhere не обновляется, поэтому я обновил Django на pythonanywhere с 1.xx до 2.0.9.

Ошибка вышла так:

ImportError в / не может импортировать имя 'path'

django version: 1.x.x
python version: 3.6.6

и, к сожалению, мое приложение выдало мне еще одну ошибку:

OperationalError в / нет такого столбца.-blog / myenv / lib / python3.6 / site-packages / django / db / backends / sqlite3 / base.py в execute, строка 303 Исполняемый файл Python: / usr / local / bin / uwsgi Версия Python: 3.6.6

Я думал, что эта ошибка произошла из-за какой-то базы данных, поэтому я попытался migrate или makemigrations на pythonanywhere, но я все еще не мог это исправить.

Итак, есть кто-нибудь, ктознает, как исправить эту базу данных?

Вот мой model.py:

from django.conf import settings
from django.db import models
from django.utils import timezone


class Post(models.Model):
    author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    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

здесь вывод python manage.py showmigrations:

admin
 [X] 0001_initial
 [X] 0002_logentry_remove_auto_add
auth
 [X] 0001_initial
 [X] 0002_alter_permission_name_max_length
 [X] 0003_alter_user_email_max_length
 [X] 0004_alter_user_username_opts
 [X] 0005_alter_user_last_login_null
 [X] 0006_require_contenttypes_0002
 [X] 0007_alter_validators_add_error_messages
 [X] 0008_alter_user_username_max_length
 [X] 0009_alter_user_last_name_max_length
blog
 [X] 0001_initial
contenttypes
 [X] 0001_initial
 [X] 0002_remove_content_type_name
sessions
 [X] 0001_initial

1 Ответ

0 голосов
/ 20 декабря 2018

Проблема, как я вижу, связана с миграцией базы данных и django.

Объект Post внутри блога имеет атрибут, который пытается найти django.Миграции не были правильно применены к базе данных.

Теперь, рассматривая историю миграций, я не знаю, что происходит, если я не могу просмотреть вашу базу данных, которая, как я полагаю, является sqlite.

Один из способов решения этой проблемы, если у вас новая база данных, - это избавиться от базы данных и выполнить следующие действия:

  • Удалить все миграции из каталога app/migrations
  • python manage.py makemigrations
  • python manage.py migrate

Также старайтесь избегать sqlite в максимально возможной степени.Те же самые миграции, которые выполнялись на sqlite дБ, могут быть ошибочными для баз данных Postgres или MySQL, которые являются более производительными базами данных.

ПРИМЕЧАНИЕ : Пожалуйста, поймите, что это приведет к полным даннымпотеря.Следовательно, попробуйте это, только если вы можете позволить себе пойти на компромисс с существующими / тестовыми данными.

...