Не удается создать тестовую базу данных Django
У меня есть работающий веб-сайт django 3.2/mysql 5.7.38. Я пытаюсь написать некоторые модульные тесты в первый раз, и получаю ошибку, связанную с созданием тестовой базы данных. Примерно 1/2 таблиц создается до возникновения этой ошибки (отсюда и вопрос о том, что база данных уже существует.
).Мой settings.py имеет следующее для раздела db:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'hopi_django',
'HOST': 'localhost',
'USER': 'hopi_django',
'PASSWORD': 'far0Fi8o_ge0Mah7o',
'PORT': '3306',
'OPTIONS': {
# Tell MySQLdb to connect with 'utf8mb4' character set
'charset': 'utf8mb4',
},
# Tell Django to build the test database with the 'utf8mb4' character set
'TEST': {
'CHARSET': 'utf8mb4',
'COLLATION': 'utf8mb4_unicode_ci',
'NAME': 'test_hopi_django',
}
}
}
Модель CurrentArticle была импортирована из другой базы данных MySQL вместе с несколькими другими таблицами. Я внес некоторые изменения в модель после импорта, как отмечено в комментариях. Я изменил регистр имен полей, изменил поле с ForeignKey на PostiveIntegerField, расширил опции article_type и добавил поле. Все это отражено в миграциях для этой таблицы. Эта таблица и все импортированные таблицы работают правильно.
class CurrentArticle(models.Model):
# Field definitions for field_type
NO_SOURCE = 0
SPACE_PLACE = 1
SOLAR_SYSTEM_NEWS = 2
NIGH_SKY_NEWS = 3
SOURCES = (
(NO_SOURCE, 'No Source'),
(SPACE_PLACE, 'Space Place'),
(SOLAR_SYSTEM_NEWS, 'Solar System News'),
(NIGH_SKY_NEWS, 'Night Sky News'),
)
id = models.AutoField(primary_key=True) # Field name made lowercase.
article_type = models.IntegerField(choices = SOURCES, default = NO_SOURCE)
#article_id = models.ForeignKey(Articles, on_delete=models.CASCADE, db_column='articleID')
article_id = models.PositiveIntegerField(db_column='articleID') # Field name made lowercase.
article_number = models.PositiveIntegerField(db_column='articleNumber') # Field name made lowercase.
last_update = models.DateTimeField(db_column='lastUpdate', auto_now=True, editable=False) # Field name made lowercase.
class Meta:
#managed = False
db_table = 'CurrentArticle'
Таблица CurrentArticle существует в нетестовой базе данных.
mysql> show columns in hopi_django.CurrentArticle;
+---------------+------------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+------------------+------+-----+---------------------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| articleID | int(10) unsigned | NO | | NULL | |
| articleNumber | int(10) unsigned | NO | | 0 | |
| lastUpdate | datetime | NO | | 2022-01-01 09:00:00 | |
| article_type | int(11) | NO | | NULL | |
+---------------+------------------+------+-----+---------------------+----------------+
5 rows in set (0.00 sec)
Похоже, что в миграциях для этой таблицы есть проблема, судя по сообщениям об ошибках, но я не уверен, что вызывает ошибку.
Я также предоставил все привилегии для баз данных test_hopi_django и hopi_django пользователю hopi_django.
mysql> show grants for hopi_django@localhost;
+---------------------------------------------------------------------------+
| Grants for hopi_django@localhost |
+---------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'hopi_django'@'localhost' |
| GRANT ALL PRIVILEGES ON `hopi_django`.* TO 'hopi_django'@'localhost' |
| GRANT ALL PRIVILEGES ON `test_hopi_django`.* TO 'hopi_django'@'localhost' |
+---------------------------------------------------------------------------+
3 rows in set (0.00 sec)
Спасибо за любое руководство, которое вы можете мне дать!