PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

PG::Error - bidang numerik meluap di Heroku

Anda memiliki numeric bidang dengan typmod numeric(8,2) dan Anda mencoba menyimpan nilai yang lebih besar dari 999999.99 di dalamnya. Lihat manual PostgreSQL di NUMERIC untuk informasi tentang skala numerik dan presisi, yang merupakan kualifikasi yang ditampilkan setelah jenis dalam tanda kurung.

Pertanyaan sebelumnya ini tampaknya membahas masalah yang sama dengan Rails, menunjukkan model Rails dan bagaimana skala dan presisi ditetapkan.

NUMERIC bukan bidang tanggal/waktu, ini bidang angka.

Demo masalah:

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.

Sangat disayangkan bahwa Pg tidak memberi tahu Anda bidang apa ini ketika itu adalah bidang. Namun, sulit untuk melakukannya, karena biasanya tidak tahu nilai mana yang akan masuk ke bidang mana saat menguraikan string literal. Aktifkan log_statement = 'all' di postgresql.conf , ALTER USER ... SET , ALTER DATABASE ... SET , atau per sesi dengan SET log_statement = 'all' lalu uji ulang dan periksa log kueri.

Lihat juga definisi tabel dengan \dt di psql untuk melihat apa yang mungkin memiliki tipe numeric(8,2) dan dapat menyebabkan masalah.

Adapun mengapa ini bekerja secara lokal:Apakah DB PostgreSQL lokal? Beberapa pengguna Rails tampaknya memiliki pengaturan yang sangat aneh di mana mereka menggunakan SQLite secara lokal, dan PostgreSQL di Heroku. Ini adalah resep untuk kekacauan dan masalah penyebaran. Gunakan database yang sama dalam pengembangan dan pengujian. Jika adalah PostgreSQL secara lokal, apakah versinya sama?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Membuat Daftar Database dan Tabel di PostgreSQL Menggunakan psql

  2. Tidak dapat menginstal permata pg di Mavericks dengan Postgres.app

  3. jendela geser sql - menemukan nilai maksimal selama interval

  4. jatuhkan db di postgres

  5. Upgrade Slony-I 2.0.x ke versi terbaru 2.1.x