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
Что я могу сделать, чтобы получить таблицы для этого приложения?
Ответы
Ответ 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
- комментарий в вашей модели в models.py
- перейдите к шагу 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", например. Надежда, которая поможет некоторым из вас в будущем.