Django.db.utils.ProgrammingError: (1146, «Таблица „test_db.sensori“ не существует»)
У меня возникла эта проблема, когда я запускаю свой тестовый пример с django и mysql.
когда я запускаю manage.py test
, я получаю эту ошибку.
вот мой models.py
from django.db import models
class Sensori(models.Model):
id = models.IntegerField(db_column='ID', primary_key=True) # Field name made lowercase.
tipo = models.CharField(db_column='Tipo', max_length=45, blank=True, null=True) # Field name made lowercase.
descrizione = models.CharField(db_column='Descrizione', max_length=255, blank=True, null=True) # Field name made lowercase.
accuratezza = models.FloatField(db_column='Accuratezza', blank=True, null=True) # Field name made lowercase.
precisione = models.FloatField(db_column='Precisione', blank=True, null=True) # Field name made lowercase.
temperaturamin = models.FloatField(db_column='TemperaturaMin', blank=True, null=True) # Field name made lowercase.
temperaturamax = models.FloatField(db_column='TemperaturaMax', blank=True, null=True) # Field name made lowercase.
tolleranza = models.FloatField(db_column='Tolleranza', blank=True, null=True) # Field name made lowercase.
tensioneesercizio = models.FloatField(db_column='TensioneEsercizio', blank=True, null=True) # Field name made lowercase.
sensibilita = models.FloatField(db_column='Sensibilita', blank=True, null=True) # Field name made lowercase.
class Meta: #database esterno
managed = False
db_table = 'Sensori'
app_label = 'gestioneSensori'
class Letture(models.Model):
id = models.IntegerField(db_column='ID', primary_key=True) # Field name made lowercase.
valore = models.FloatField(db_column='Valore', blank=True, null=True) # Field name made lowercase.
unita = models.CharField(db_column='Unita', max_length=10, blank=True, null=True) # Field name made lowercase.
datarilevazione = models.DateTimeField(auto_now_add=True, db_column='DataRilevazione') # Field name made lowercase.
sensoriid = models.ForeignKey(Sensori, db_column='SensoriID', on_delete=models.CASCADE, null=False) # Field name made lowercase.
class Meta:
managed = False
db_table = 'Letture'
app_label = 'gestioneSensori'
Единственное, что я не пробовал, это не использовать mysql, а использовать базу данных django по умолчанию. Сервер работает хорошо, но я не могу выполнить автоматическое тестирование. Не могли бы вы мне помочь?
я не могу найти решение
У вас в опциях Meta указано managed=False
, что означает, что для этой модели не будут выполняться операции по созданию, изменению или удалению таблиц базы данных. Проще говоря, Django не будет управлять вашей базой данных.
Установите managed=True
и выполните команду python manage.py makemigrations
, а также python manage.py migrate
.
В docs также говорится:
Для тестов, включающих модели с managed=False, вы должны убедиться, что правильные таблицы созданы в рамках настройки теста.
Смотрите документацию .