Hai un numeric campo con typmod numeric(8,2) e stai cercando di memorizzare un valore maggiore di 999999.99 dentro. Vedi il manuale di PostgreSQL su NUMERIC
per informazioni su scala numerica e precisione, che sono i qualificatori mostrati dopo il tipo tra parentesi.
Questa domanda precedente sembra coprire lo stesso problema con Rails, mostrando il modello Rails e come vengono assegnate la scala e la precisione.
NUMERIC non è un campo data/ora, è un campo numerico.
Demo del problema:
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.
Peccato che Pg non ti dica che campo è questo quando è un campo. È difficile che lo faccia, però, perché di solito non sa quale valore andrà in quale campo quando analizza le stringhe letterali. Abilita log_statement = 'all' in postgresql.conf , ALTER USER ... SET , ALTER DATABASE ... SET o per sessione con SET log_statement = 'all' quindi testa nuovamente ed esamina i log delle query.
Guarda anche le definizioni delle tabelle con \dt in psql per vedere cosa potrebbe avere il tipo numeric(8,2) e potrebbe essere la causa del problema.
Per quanto riguarda il motivo per cui funziona localmente:il DB locale è PostgreSQL? Alcuni utenti di Rails sembrano avere una configurazione molto strana in cui usano SQLite localmente e PostgreSQL su Heroku. Questa è una ricetta per il caos e i problemi di distribuzione. Utilizzare lo stesso database in fase di sviluppo e test. Se lo è PostgreSQL in locale, è la stessa versione?