#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?