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

ActiveRecord और Postgresql के साथ प्रगणित प्रकार

आपको db/schema.rb . से स्विच करना होगा करने के लिए db/structure.sql

अंतर्निहित समस्या यह है कि schema.rb डेटाबेस की संरचना का एक प्रतिनिधित्व है क्योंकि ActiveRecord इसे देखता है लेकिन ActiveRecord बहुत सी चीजों को नहीं समझता है (जैसे create type , चेक बाधाओं, और अन्य चीजें जो execute some_raw_sql में दिखाई देती हैं माइग्रेशन में स्टेटमेंट) जो PostgreSQL करता है। आप create type आप केवल schema.rb के अलावा चाहते हैं इसे कभी नहीं देख पाएंगे।

यदि आप उन चीजों का उपयोग करना चाहते हैं जो ActiveRecord समझ में नहीं आती है तो आपको db/structure.sql का उपयोग करना होगा। अपने डेटाबेस की संरचना को स्टोर करने के लिए। structure.sql डेटाबेस की संरचना को स्टोर करता है क्योंकि डेटाबेस इसे समझता है, न कि ActiveRecord इसे समझता है।

स्विच करना आसान है:

  1. अपना config/application.rbअपडेट करें config.active_record.schema_format = :sql . को समाहित करने के लिए ।
  2. एक rake db:structure:dumpकरें आरंभिक db/structure.sql get प्राप्त करने के लिए ।
  3. हटाएं db/schema.rb आपकी निर्देशिका ट्री और संशोधन नियंत्रण से।
  4. db/structure.sqlजोड़ें संशोधन नियंत्रण के लिए।
  5. अपनी रेक आदतों को समायोजित करें:
    • db:structure:dump का उपयोग करें db:schema:dump . के बजाय
    • db:structure:loadका उपयोग करें db:schema:load . के बजाय

उस ने कहा, मुझे यकीन नहीं है कि PostgreSQL का मूल enum . कितना अच्छा है प्रकार ActiveRecord के साथ इंटरैक्ट करेंगे क्योंकि मैंने इसे कभी नहीं किया है। AR's enum एस स्ट्रिंग्स और पूर्णांकों के बीच क्लाइंट-साइड अनुवाद हैं लेकिन PostgreSQL का enum एस डेटाबेस के अंदर संभाला जाता है और वे एक दूसरे के बारे में नहीं जानते हैं। संघर्ष हो सकता है और आपको उन्हें एक-दूसरे के साथ समन्वयित रखना सुनिश्चित करना होगा।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एकाधिक CSV फ़ाइलों को पोस्टग्रेज़ में कॉपी करें

  2. रेल में कच्ची क्वेरी पोस्ट करने के लिए पैरा पास करने का कोई तरीका है?

  3. टेम्पलेट डेटाबेस संग्रह कोडिंग कैसे बदलें

  4. ओडू में एक डेटाबेस से दूसरे डेटाबेस में डेटा ट्रांसफर

  5. इस परिणामसेट के बंद होने के कारण कनेक्शन नहीं खोला जा सका