मेरा पैसा गलत वर्तनी वाले नाम पर है। मुझे आपके त्रुटि संदेश में पता चला है कि
OmniCloud_App_accounts
OmniCloud_App_user
दूसरी तालिका एकवचन का उपयोग करती है। संयोग से इस तरह की दूसरी तालिका नहीं है:
OmniCloud_App_users
साथ ही, PostgreSQL में मिश्रित केस आइडेंटिफ़ायर का उपयोग करना SO पर यहाँ प्रतिष्ठा का एक बड़ा स्रोत है। यह आपको जल्दी या बाद में काटेगा। उस मूर्खता के शिकार यहां नियमित हैं। इस नाम की कोई भी तालिका हो सकती है - और आप "OmniCloud_App_user"
में दोहरे उद्धरण चिह्नों को भूल गए हैं कहीं?
omnicloud_app_user
यह या तो वह है या उपयोगकर्ता को बचाने वाला लेन-देन अभी तक प्रतिबद्ध नहीं है। क्या आप केवल उपयोगकर्ता (और अभी तक कोई खाता नहीं) बना सकते हैं और जांच सकते हैं कि क्या यह तालिका में सही डेटाबेस में और सही आईडी के साथ समाप्त होता है?
संपादित करें:समस्या के निदान के लिए उपकरण
अगर आप जानते हैं कि उपयोगकर्ता बनाए जा रहे हैं, तो प्रश्न यह है:क्या विदेशी कुंजी बाधा user_id_refs_id_468fbcec324e93d2
है सही जगह देखो? वही डेटाबेस? वही स्कीमा? वही टेबल?
यह पता लगाने के लिए कि आपके डेटाबेस में कौन सी तालिकाएँ मौजूद हैं, निम्न क्वेरी का प्रयास करें (यदि आपके पास आवश्यक विशेषाधिकार हैं):
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';
सभी स्कीमा में सभी टेबल दिखाता है जिनके नाम में "उपयोगकर्ता" है, केस असंवेदनशील है। साथ ही यदि तालिका में ट्रिगर हैं (कर सकते हैं आपकी समस्या का कारण है) और इसमें कितनी पंक्तियाँ हैं (अनुमान ANALYZE
. द्वारा अद्यतन किया गया है) ) आपको लीड दे सकता है...
आप मेटा-कमांड \d
. का भी उपयोग कर सकते हैं मानक कमांड लाइन क्लाइंट (इंटरैक्टिव टर्मिनल) का psql
।
मैं एक टेस्ट केस चलाऊंगा और पोस्टग्रेज सर्वर को वह सब कुछ मिलेगा जो उसे मिलता है। उस उद्देश्य के लिए यह पैरामीटर सेट करें:
set log_statement = 'all';
मैनुअल लॉगिंग-पैरामीटर के बारे में ।
पैरामीटर कैसे सेट करें पर मैनुअल ।