PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

हेरोकू पर रेल ऐप पोस्टग्रेएसक्यूएल डेटाबेस को नहीं लिख सकता, केवल पढ़ें

यह एक लेन-देन के मुद्दे की तरह लगता है, जहां आप COMMIT नहीं हैं काम करने के बाद अपने लेन-देन को टिंग करना, इसलिए परिवर्तन खो जाते हैं। यदि आपका SQLite ड्राइवर COMMIT में डिफॉल्ट करता है टिंग लेन-देन जो एक स्पष्ट COMMIT के बिना बंद हो जाते हैं या रोलबैक, और आपका Pg ड्राइवर डिफ़ॉल्ट रूप से ROLLBACK , आपको वर्णित व्यवहार मिलेगा। ऐसा ही होगा यदि SQLite डिफ़ॉल्ट रूप से प्रत्येक स्टेटमेंट को ऑटोकॉमिटिंग करने के लिए डिफॉल्ट करता है, और Pg ड्राइवर ड्राइवर लेनदेन को खोलने में चूक करता है।

यह परीक्षण के लिए उसी स्थानीय डेटाबेस का उपयोग करने के कई अच्छे कारणों में से एक है, जब आप लाइव होने के लिए परिनियोजित करने जा रहे हैं।

यदि आप सामान्य Pg उदाहरण पर होते तो मैं आपको log_statement = 'all' सक्षम करने के लिए कहता। में postgresql.conf , पीजी पुनः लोड करें, और लॉग देखें। आप हेरोकू पर ऐसा नहीं कर सकते हैं, लेकिन आपके पास heroku logs --ps postgres के साथ Pg लॉग तक पहुंच है। . ALTER USER my_heroku_user SET log_statement = 'all'; चलाने का प्रयास करें , पुन:परीक्षण, और लॉग की जांच करना।

वैकल्पिक रूप से, Pg को स्थानीय रूप से स्थापित करें।

अन्य कम संभावनाएँ जो दिमाग में आती हैं:

  • आप पढ़ने के लिए लंबे समय से चल रहे SERIALIZABLE लेनदेन का उपयोग कर रहे हैं, इसलिए उनका स्नैपशॉट कभी भी अपडेट नहीं होता है। बहुत कम संभावना है।
  • डेटाबेस ऑब्जेक्ट पर अनुमतियाँ INSERT का कारण बन रही हैं एस, UPDATE s, आदि विफल होने के लिए, और आपका ऐप परिणामी त्रुटियों को अनदेखा कर रहा है। फिर से, संभावना नहीं है।
  • आपके पास DO INSTEAD . है नियम जो आपकी अपेक्षा के अनुरूप नहीं हैं, या BEFORE ट्रिगर जो NULL लौटाते हैं , इस प्रकार चुपचाप संचालन को नो-ऑप्स में बदल देता है। यदि आप SQLite के साथ परीक्षण कर रहे हैं तो संभावना नहीं है।
  • आप जिस DB से पढ़ रहे हैं, उससे भिन्न DB को लिख रहे हैं। उन सेटअपों में असंभव नहीं है जो हॉट स्टैंडबाय आदि के समूह से पढ़ने का प्रयास कर रहे हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL में अस्थायी तालिकाएँ बनाना

  2. स्प्रिंग बूट पर हाइबरनेट के साथ PostGIS ज्यामिति बिंदु फ़ील्ड को मैप करें

  3. पोस्टग्रेज:बूलियन मान के आधार पर कॉलम नाम चुनें

  4. रेल में ActiveRecord का उपयोग करके डेटाबेस से प्रत्येक nth पंक्ति लौटाएं

  5. PostgreSQL 9.2 JDBC ड्राइवर क्लाइंट टाइम ज़ोन का उपयोग करता है?