Булево поле Django не может быть перенесено в Postgresql
Django версия 4.1 Я создал миграцию на SQLite3 и хочу перейти на Postgresql. Когда я подключаюсь к Postgresql, у меня возникает такая ошибка
django.db.utils.ProgrammingError: cannot cast type smallint to boolean
LINE 1: ...R COLUMN "isProduct" TYPE boolean USING "isProduct"::boolean
это моя модель
from django.db import models
class Item(models.Model):
name = models.CharField(max_length = 150)
slug = models.SlugField(unique = True, db_index=True, null=True)
pic = models.URLField(max_length = 400)
address = models.CharField(max_length = 150)
phone = models.CharField(max_length = 15)
price = models.IntegerField()
original_link = models.URLField(max_length = 400)
description = models.TextField(max_length = 1500)
additional_desc = models.TextField(max_length = 1500,default='')
material = models.TextField(max_length = 200, default = '')
weight = models.DecimalField(max_digits = 12, decimal_places = 2, default = 0)
weight_unit = models.CharField(max_length = 4, default = '')
color = models.CharField(max_length = 50, default = '')
dimension_length = models.DecimalField(max_digits = 12, decimal_places = 2, default = 0)
dimension_width = models.DecimalField(max_digits = 12, decimal_places = 2, default = 0)
dimension_height = models.DecimalField(max_digits = 12, decimal_places = 2, default = 0)
dimension_unit = models.CharField(max_length = 4, default='')
isProduct = models.BooleanField(default = True)
furniture_location = models.CharField(max_length = 100, default='')
def __str__(self):
return self.name
я пытался изменить BooleanField
на SmallIntegerField
, PositiveSmallIntegerField
и IntegerField
и ошибка все равно говорит то же самое
Как исправить эту ошибку, потому что эта ошибка не позволяет sessions
и contenttype
таблицам быть перенесенными
По моему опыту, если вы пытались изменить что-то в моделях Django, а ошибка остается прежней, это означает, что вам нужно перезапустить или удалить таблицу и начать ее миграцию. Я предлагаю вам сделать следующее Убедитесь, что settings.py подключен к PostgreSQL
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': '<PostgreSQL_DBName>',
'USER': '<PostgreSQL_UserName>',
'PASSWORD': '<PostgreSQL_Password>',
'HOST': '<PostgreSQL_HOST>',
'PORT': '<PostgreSQL_PORT>',
}
}
- Удалите/удалите базу данных в PostgreSQL .
- Удалите все миграции в
migrations/
python manage.py makemigrations
python manage.py migrate
** Примечания Если ваш PostgreSQL находится на localhost и вы получаете доступ из pgAdmin
- Отключено соединение с базой данных
- Удалите/выбросьте базу данных
- База данных выглядит как не удаленная, все, что вам нужно сделать, это закрыть pgAdmin и открыть его снова .
- выполните шаги 3 и 4 выше