У меня есть две проблемы, обе из которых связаны между собой
Выпуск № 1
У моего приложения есть онлайн-база данных Postgres, которую он использует для хранения данных. Поскольку это приложение Dockerized, созданные мной миграции больше не отображаются на локальном хосте, а хранятся в контейнере Docker.
Все вопросы, которые я видел до сих пор, похоже, не имеют проблем с выполнением миграций и добавлением уникального ограничения к одному из полей в таблице.
Я написал шелл-код для запуска скрипта Python, который возвращает мне содержимое файла миграции в окне командной строки. Я смог получить файл миграций, который должен был быть применен, и добавил строку в таблицу django_migrations, чтобы указать то же самое. Затем я запустил makemigrations и мигрировал, но он сказал, что не применены никакие изменения (что заставляет меня думать, что строка, которую я добавил в базу данных, должна была автоматически создаваться django только после того, как он обнаружил миграции самостоятельно, а не указывал файл миграций и просить его внести изменения). Проблема в том, что теперь новые миграции все еще обнаруживают следующее изменение
Migrations for 'mdp':
db4mdp/mdp/migrations/0012_testing.py
- Alter field mdp_name on languages
Несмотря на обнаружение этого очевидного «изменения», я получаю следующую ошибку:
return self.cursor.execute(sql, params)
django.db.utils.ProgrammingError: relation "mdp_mdp_mdp_fullname_281e4228_uniq" already exists
Я уже проверил на своем сервере postgres, используя pgadmin4, чтобы проверить, действительно ли к нему применено ограничение. И это с именем рядом с отношением, как указано выше. Так почему же Django, очевидно, обнаруживает это как изменение, которое должно быть сделано. Дело в том, что если я сейчас удалю новый файл миграции, который я создал в своем каталоге python, он, вероятно, запустится (так как изменения «очевидно» были внесены в базу данных), но у меня не будет файла миграции, чтобы отслеживать изменений. Мне не нужно, если мне нужно продолжать миграцию сейчас, когда я использую онлайн-базу данных. Я не буду откатывать какие-либо изменения, которые я делаю, и не буду вносить изменения часто. Это всего лишь один / два раза, но я хочу устранить ошибку.
Выпуск № 2
Причина, по которой я использовал «по-видимому» в моей вышеупомянутой проблеме, заключается в том, что хотя раздел ограничений в моей общедоступной схеме показывает мне, что ограничения по какой-то причине были применены, когда я пытаюсь создать новую запись в моей таблице с неуникальная строка в поле, которое я определил как уникальное, оно позволяет создавать его в любом случае.