У меня есть две проблемы, каждая из которых взаимосвязана
Проблема №1
В моем приложении есть онлайн-база данных Postgres, которую оно использует для хранения данных. Поскольку это Dockerized-приложение, созданные мной миграции больше не отображаются на моем локальном хосте, а вместо этого хранятся в контейнере Docker. Все вопросы, которые я видел до сих пор, похоже, не имеют проблем с миграцией и добавлением уникального ограничения в одно из полей в таблице.
Я написал код оболочки для запуска скрипта Python, который возвращает мне содержимое файла миграции в окне командной строки. Мне удалось получить файл миграции, который нужно было применить, и добавить строку в таблицу django_migrations, чтобы указать то же самое. Затем я запустил makemigrations и migrate, но он сказал, что никаких изменений не применялось (что наводит меня на мысль, что строка, которую я добавил в базу данных, должна была автоматически создаваться 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, чтобы проверить, действительно ли к нему применено ограничение. И он имеет с именем рядом отношение, как указано выше. Так почему же тогда Джанго, по-видимому, определяет это как изменение, которое необходимо внести. Дело в том, что если я сейчас удалю новый файл миграции, который я создал в своем каталоге python, он, вероятно, запустится (поскольку изменения «очевидно» были внесены в базу данных), но у меня не будет файла миграции, чтобы отслеживать изменений. Мне не нужно, если мне нужно сохранить миграции сейчас, когда я использую онлайн-базу данных. Я не буду откатывать какие-либо изменения, которые я делаю, и не буду вносить изменения слишком часто. Это всего лишь один/два раза, но я хочу устранить ошибку.
Проблема №2
Причина, по которой я использовал «очевидно» в моей предыдущей проблеме, заключается в том, что, несмотря на то, что раздел ограничений в моей общедоступной схеме показывает мне, что ограничения были применены по какой-то причине, когда я пытаюсь создать новую запись в моей таблице с не- уникальная строка в поле, которое я определил как уникальное, в любом случае позволяет его создание.