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

हेरोकू - ActiveRecord ::StatementInvalid (पीजी ::त्रुटि:त्रुटि:अनुरोधित कॉलम मौजूद नहीं है

मानक SQL स्ट्रिंग्स सिंगल कोट्स का उपयोग करती हैं, डबल कोट्स पहचानकर्ताओं के लिए हैं (जैसे टेबल और कॉलम नाम); PostgreSQL यहां मानक का पालन करता है, MySQL और SQLite कम सख्त हैं, अन्य डेटाबेस अलग-अलग मात्रा में सख्ती के साथ अन्य काम करते हैं। किसी भी स्थिति में, SQL स्ट्रिंग अक्षर के लिए सिंगल कोट्स हर जगह समान रूप से काम करना चाहिए।

आप SQL स्ट्रिंग पर दोहरे उद्धरण चिह्नों का उपयोग कर रहे हैं:

@holidays = Holiday.find(:all, :conditions => 'state = "requested"')
#------------------------------------------------------^---------^

आपको एकल उद्धरण अवश्य देने चाहिए:

@holidays = Holiday.find(:all, :conditions => %q{state = 'requested'})

या इसका आधुनिकीकरण करें और ActiveRecord को उद्धरण से निपटने दें:

@holidays = Holiday.where(:state => 'requested')

आपको शायद इसके लिए उद्धरण को भी ठीक करना होगा:

@holidays = Holiday.find(:all, :conditions => ["approver_id = #{current_user.id}", "state = requested"])

फिर से, इसका आधुनिकीकरण करना सबसे आसान तरीका है:

@holidays = Holiday.where(:approver_id => current_user.id, :state => 'requested')

मैं अनुमान लगा रहा हूं कि आप SQLite पर विकास कर रहे हैं लेकिन PostgreSQL पर तैनात कर रहे हैं। यह एक बुरा विचार है, हमेशा एक ही स्टैक पर विकसित और परिनियोजित करें।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. हेरोकू पीजी:बैकअप बहाल रेल एप्लिकेशन टाइमआउट के कारण स्पष्ट रूप से विफल हो जाता है

  2. डॉकरीकृत ऐप से डॉकटर में पोस्टग्रेज सर्वर से कनेक्ट नहीं हो सका

  3. PostgreSQL 9.3 . का उपयोग करके CTE UPSERT में DEFAULT मान उत्पन्न करें

  4. कॉलम डेटा अपडेट करने में त्रुटि पोस्टग्रेज करता है

  5. PostgreSQL 11 में विभाजन सुधार