Не удается создать тестовую базу данных 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)

Спасибо за любое руководство, которое вы можете мне дать!

Вернуться на верх