Ini terdengar seperti masalah transaksi, di mana Anda tidak COMMIT
ting transaksi Anda setelah Anda bekerja, sehingga perubahan hilang. Jika driver SQLite Anda default ke COMMIT
ting transaksi yang ditutup tanpa COMMIT
yang eksplisit atau rollback, dan driver Pg Anda default ke ROLLBACK
, Anda akan mendapatkan perilaku yang dijelaskan. Hal yang sama akan terjadi jika default SQLite untuk autocomitting setiap pernyataan secara default, dan driver Pg default untuk membuka transaksi.
Ini adalah salah satu dari banyak alasan bagus untuk menggunakan database lokal yang sama untuk pengujian seperti yang akan Anda terapkan saat Anda ingin melakukan live streaming.
Jika Anda menggunakan instance Pg normal, saya akan memberi tahu Anda untuk mengaktifkan log_statement = 'all'
di postgresql.conf
, muat ulang Pg, dan lihat lognya. Anda tidak dapat melakukannya di Heroku, tetapi Anda memiliki akses ke log Pg dengan heroku logs --ps postgres
. Coba jalankan ALTER USER my_heroku_user SET log_statement = 'all';
, menguji ulang, dan memeriksa log.
Sebagai alternatif, instal Pg secara lokal.
Kemungkinan kecil lainnya yang muncul dalam pikiran:
- Anda menggunakan transaksi SERIALIZABLE yang sudah berjalan lama untuk pembacaan, sehingga cuplikannya tidak pernah diperbarui. Sangat tidak mungkin.
- Izin pada objek database menyebabkan
INSERT
s,UPDATE
s, dll gagal, dan aplikasi Anda mengabaikan kesalahan yang dihasilkan. Sekali lagi, tidak mungkin. - Anda memiliki
DO INSTEAD
aturan yang tidak melakukan apa yang Anda harapkan, atauBEFORE
pemicu yang mengembalikanNULL
, sehingga secara diam-diam mengubah operasi menjadi tanpa operasi. Tampaknya tidak mungkin jika Anda menguji dengan SQLite. - Anda menulis ke DB yang berbeda dari tempat Anda membaca. Bukan tidak mungkin dalam pengaturan yang mencoba membaca dari sekelompok siaga panas, dll.