Django IntegerField в PostgreSQL выдает ошибку «переполнение числового поля» при 1000

#django #database #postgresql #integer

#django #База данных #postgresql #целое

Вопрос:

Контекст: я перенес свой проект из локальной базы данных SQLite в базу данных AWS RDS PostgreSQL. Это была пустая база данных, поэтому миграция прошла нормально, но теперь, когда я тестирую фактическое сохранение данных, я получаю ошибку в IntegerField.

models.py

 class Item(models.Model):
    name = models.CharField(max_length=100)
    description = models.TextField(null=True, blank=True)
    amount = models.IntegerField(default=0)
  

test.py

 testItem = Item(name="Test item valued at 1000")
testItem.description = "please delete"
testItem.amount = 1000
testItem.save()
  

И вот я получаю эту ошибку:

 numeric field overflow
DETAIL:  A field with precision 5, scale 2 must round to an absolute value less than 10^3.
  

Ошибка довольно очевидна, я немного уменьшаю ее, и все в порядке. Но у меня создалось впечатление, что целочисленные поля могут достигать 2147483647. Я понятия не имею, почему с целым числом связаны точность и масштаб. Я просто не совсем уверен, что происходит, считает ли моя база данных, что это десятичное число? Я запустил новую миграцию, которая прошла без сбоев, и поле ранее никогда не было десятичным полем. Мне кажется, что я, вероятно, упускаю здесь что-то чрезвычайно простое.

Комментарии:

1. Можете ли вы опубликовать код для соответствующей миграции? Также можете ли вы проверить свою базу данных и опубликовать точный тип данных, который имеет amount столбец?

2. Я не уверен, как сделать что-либо из этих вещей. Я погуглю и посмотрю, найду ли я что-нибудь.

3. Sql миграции таков: — Создать элемент модели — СОЗДАТЬ ТАБЛИЦУ «storefront_item» (ПЕРВИЧНЫЙ КЛЮЧ «id» serial НЕ равен НУЛЮ, «name» varchar(100) НЕ равен НУЛЮ, текст «description» равен нулю, целое число «amount» НЕ равно нулю); Таким образом, похоже, что amount является целым числом.

4. Что вы получаете, когда запускаете это непосредственно в базе данных?: SELECT data_type, numeric_precision, numeric_precision_radix FROM information_schema.columns WHERE table_name = 'storefront_item' AND column_name = 'amount'

5. На самом деле у меня не установлен psql, я не думаю, что смогу каким-то образом запустить его с консоли AWS RDS?