Невозможно привести тип 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, но все равно столкнулись с проблемами.

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