Невозможно привести тип bigint к UUID в миграции Django при переходе с SQLite на PostgreSQL
Я столкнулся с проблемой при миграции моего проекта Django с SQLite на PostgreSQL. Ранее я установил для поля id значение UUID в SQLite, но теперь при применении миграции в PostgreSQL я получаю следующую ошибку: `django.db.utils.ProgrammingError: cannot cast type bigint to uuid LINE 1: ...ompany_company" ALTER COLUMN "id" TYPE uuid USING "id"::uuid ^
мои модели
class Company(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
user = models.OneToOneField(User, on_delete=models.CASCADE)
class Job(models.Model):
BEGINNER = 'Beginner'
MID = 'Mid'
EXPERT = 'Expert'
LEVEL_CHOICES = [
(BEGINNER, 'Beginner'),
(MID, 'Mid'),
(EXPERT, 'Expert'),
]
user = models.ForeignKey(User, on_delete=models.CASCADE)
company = models.ForeignKey(Company, on_delete=models.CASCADE)
`
Изначально я разрабатывал свой Django-проект с использованием SQLite и установил для поля id модели Company значение UUID. Теперь, когда я переношу базу данных на PostgreSQL, мне нужно обновить поле id до UUID в схеме PostgreSQL.
Подробности:
1.Текущий миграционный код:
# Generated by Django 4.2.7 on 2024-04-26 22:25
from django.db import migrations, models
import uuid
class Migration(migrations.Migration):
dependencies = [
('company', '0002_initial'),
]
operations = [
migrations.AlterField(
model_name='company',
name='id',
field=models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False),
),
]
2.Сообщение об ошибке миграции:
psycopg2.errors.CannotCoerce: cannot cast type bigint to uuid
LINE 1: ...ompany_company" ALTER COLUMN "id" TYPE uuid USING "id"::uuid
^
Я пытался:
Используйте ALTER COLUMN в файле миграции для приведения типа, но столкнулись с проблемами при коэрцитивности типов. Добавьте временное поле UUID и перенесите в него данные перед удалением исходного поля id, но все равно столкнулись с проблемами.