PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

PG::Error - przepełnienie pola numerycznego w Heroku

Masz numeric pole z typmod numeric(8,2) i próbujesz przechowywać wartość większą niż 999999.99 w tym. Zobacz podręcznik PostgreSQL na temat NUMERIC aby uzyskać informacje o skali numerycznej i precyzji, które są kwalifikatorami wyświetlanymi po typie w nawiasach.

To wcześniejsze pytanie wydaje się obejmować ten sam problem z Rails, pokazując model Rails oraz sposób przypisywania skali i precyzji.

NUMERIC nie jest polem daty/czasu, jest polem liczbowym.

Demo problemu:

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.

Szkoda, że ​​Pg nie mówi, jakie to jest pole, gdy jest polem. Jest to jednak trudne, ponieważ zwykle nie wie, która wartość trafi do którego pola, gdy analizuje literały ciągu. Włącz log_statement = 'all' w postgresql.conf , ALTER USER ... SET , ALTER DATABASE ... SET , lub na sesję z SET log_statement = 'all' następnie ponownie przetestuj i sprawdź dzienniki zapytań.

Spójrz także na definicje tabel za pomocą \dt w psql aby zobaczyć, co może mieć typ numeric(8,2) i może być przyczyną problemu.

Dlaczego działa lokalnie:czy jest to lokalna baza danych PostgreSQL? Niektórzy użytkownicy Railsów wydają się mieć bardzo dziwną konfigurację, w której używają SQLite lokalnie, a PostgreSQL na Heroku. To recepta na chaos i problemy z wdrożeniem. Korzystaj z tej samej bazy danych podczas tworzenia i testowania. Jeśli jest PostgreSQL lokalnie, czy to ta sama wersja?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dlaczego ta reguła nie zapobiega naruszeniom zduplikowanych kluczy?

  2. Instrukcja UPDATE z wieloma połączeniami w PostgreSQL

  3. Wyodrębnij klucz, wartość z obiektów json w Postgres

  4. Problem z uprawnieniami do PostgreSQL w kontenerze docker

  5. Wykonywanie sekwencji i seriali w Postgres-XL