PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

PG::Грешка - препълване на числовото поле на Heroku

Имате numeric поле с typmod numeric(8,2) и се опитвате да съхраните стойност, по-голяма от 999999.99 в него. Вижте ръководството на PostgreSQL за NUMERIC за информация относно цифровия мащаб и прецизност, които са квалификаторите, показани след типа в скоби.

Този по-ранен въпрос изглежда покрива същия проблем с Rails, показвайки модела на Rails и как се задават мащабът и точността.

NUMERIC не е поле за дата/час, а числово поле.

Демонстрация на проблема:

regress=> SELECT  NUMERIC(8,2) '999999.99';
  numeric  
-----------
 999999.99
(1 row)

regress=> SELECT  NUMERIC(8,2) '1000000.00';
ERROR:  numeric field overflow
DETAIL:  A field with precision 8, scale 2 must round to an absolute value less than 10^6.

Жалко, че Pg не ви казва какво е това поле, когато е поле. За него обаче е трудно да го направи, защото обикновено не знае коя стойност ще влезе в кое поле, когато анализира литералите на низа. Активирайте log_statement = 'all' в postgresql.conf , ALTER USER ... SET , ALTER DATABASE ... SET , или на сесия с SET log_statement = 'all' след това тествайте отново и прегледайте регистрационните файлове на заявките.

Вижте също дефинициите на таблиците с \dt в psql за да видите какво може да има тип numeric(8,2) и може да е причина за проблема.

Що се отнася до това защо работи локално:локалната база данни PostgreSQL ли е? Някои потребители на Rails изглежда имат много странна настройка, където използват SQLite локално и PostgreSQL на Heroku. Това е рецепта за хаос и проблеми с внедряването. Използвайте една и съща база данни при разработка и тестване. Ако е PostgreSQL локално, същата версия ли е?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да извлека данни от множество свързани таблици в Postgres?

  2. Тестване на база данни в python, postgresql

  3. Как да използвам Java компонента Embedded PostgreSQL Server като отделна услуга?

  4. Случайна грешка на Postgres на Heroku:не може да се преведе името на хост <pg URL> в адрес:Името или услугата не са известни (PG::Error)

  5. Функция в PostgreSQL за вмъкване от една таблица в друга?