Подтвердить что ты не робот

Django: таблица не существует

Я отложил таблицу, связанную с приложением. и снова попробовал команду syncdb

python manage.py syncdb

Здесь отображается ошибка, например

django.db.utils.ProgrammingError: (1146, "Table 'someapp.feed' doesn't exist")

models.py

class feed(models.Model):
    user = models.ForeignKey(User,null=True,blank=True)
    feed_text = models.CharField(max_length=2000)
    date = models.CharField(max_length=30)
    upvote = models.IntegerField(default=0)
    downvote = models.IntegerField(default=0)

    def __str__(self):
        return feed.content

Что я могу сделать, чтобы получить таблицы для этого приложения?

4b9b3361

Ответ 1

  • выпадающие таблицы (вы уже сделали),
  • закомментируйте модель в model.py,
  • и..

если версия django >= 1.7:

python manage.py makemigrations
python manage.py migrate --fake

еще

python manage.py schemamigration someapp --auto
python manage.py migrate someapp --fake
  1. комментарий в вашей модели в models.py
  2. перейдите к шагу 3. НО на этот раз без - поддельной

Ответ 2

Для тех, у кого еще могут быть проблемы (например, у меня), попробуйте это:

Прокомментируйте весь URL-адрес в главном приложении urls.py

Затем перейдите и выполните миграции:

$ ./manage.py makemigrations
$ ./manage.py migrate

Проблема была устранена путем удаления ()

    solved_time = models.DateTimeField('solved time', default=timezone.now())

в

    solved_time = models.DateTimeField('solved time', default=timezone.now)

Я получил этот ответ от reddit

Ответ 3

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

sudo systemctl stop mysql.service

sudo apt-get purge mysql-server

sudo apt-get install mysql-server

sudo systemctl stop mysql.service

В моем случае код, который я вытащил, managed = False, и я хотел, чтобы таблицы поддерживались Django.

Но когда я делал makemigrations, пользовательские таблицы не были обнаружены или я получал ошибку, что имя_имя .Table_name не существует

Я попробовал следующее:

  • удалите все файлы миграции внутри папки миграции (кроме init.py файла), а затем makemigrations и, наконец, выполните миграцию
  • выше 2 ответа
  • this

PS: Это решение возможно только в том случае, если резервное копирование присутствует или данные не важны или вы только начали создавать таблицы, поскольку очистка mysql приведет к потере данных

Ответ 4

У меня была эта проблема, когда я играл с той же структурой базы данных в процессе производства и разработки. Хотя выпадающие и воссоздающие таблицы, вероятно, разрешают проблему, стоит проверить вашу базу данных и посмотреть, действительно ли модель правильна. Для себя я создал базу данных разработки неправильно с именами таблиц, все в нижнем регистре, а в процессе производства первая буква таблиц была капитализирована. Я использовал команду python manage.py inspectdb для производства db и сравнил ее с моделью и понял, что в модели она пыталась вставить данные в таблицу "test" вместо "Test", например. Надежда, которая поможет некоторым из вас в будущем.