Uang saya salah eja nama. Saya perhatikan dalam pesan kesalahan yang Anda miliki
OmniCloud_App_accounts
OmniCloud_App_user
Tabel kedua menggunakan singular. Tidak ada tabel kedua seperti ini secara kebetulan:
OmniCloud_App_users
Juga, menggunakan pengidentifikasi kasus campuran di PostgreSQL adalah sumber reputasi yang bagus di sini di SO. Ini akan menggigit Anda cepat atau lambat. Korban kebodohan itu adalah pengunjung tetap di sini. Tabel apa pun dengan nama ini mungkin - dan Anda lupa tanda kutip ganda di "OmniCloud_App_user"
di suatu tempat?
omnicloud_app_user
Entah itu atau transaksi yang menyelamatkan pengguna belum dilakukan. Bisakah Anda hanya membuat pengguna (dan belum ada akun) dan memeriksa apakah itu berakhir di database yang tepat di tabel dan dengan ID yang benar?
Edit:alat untuk mendiagnosis masalah
Jika Anda tahu bahwa pengguna sedang dibuat, maka pertanyaannya adalah:apakah batasan kunci asing user_id_refs_id_468fbcec324e93d2
melihat tempat yang tepat? Basis data yang sama? Skema yang sama? Meja yang sama?
Untuk mengetahui tabel mana yang ada di database Anda, coba kueri berikut (jika Anda memiliki hak istimewa yang diperlukan):
SELECT n.nspname AS schema_name
,c.relname AS table_name
,c.relhastriggers
,c.reltuples
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname ~~* '%user%'
AND c.relkind = 'r'
AND nspname <> 'pg_catalog';
Menampilkan semua tabel di semua skema yang memiliki nama "pengguna", tidak peka huruf besar/kecil. Plus jika tabel memiliki pemicu (bisa menyebabkan masalah Anda) dan berapa banyak baris di dalamnya (perkiraan diperbarui oleh ANALYZE
). Mungkin memberi Anda petunjuk ...
Anda juga dapat menggunakan perintah meta \d
dari klien baris perintah standar (terminal interaktif) psql
.
Saya akan menjalankan test case dan meminta server postgres mencatat semua yang didapatnya. Tetapkan parameter ini untuk tujuan itu:
set log_statement = 'all';
Panduan tentang parameter logging .
Manual tentang cara menyetel parameter .