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

रेल 3.1। Heroku PGError:ऑपरेटर मौजूद नहीं है:वर्ण भिन्न =पूर्णांक

आपकी समस्या यहाँ है:

WHERE "reviews"."trip_id" = 32

और त्रुटि संदेश कहता है कि:

इसलिए आपने अपना trip_id बना लिया है reviews में कॉलम एक पूर्णांक के बजाय एक स्ट्रिंग के रूप में। यह SQLite में ठीक काम करेगा क्योंकि SQLite का टाइप सिस्टम ढीला है लेकिन यह PostgreSQL में काम नहीं करेगा क्योंकि PostgreSQL काफी सख्त है।

trip_id . के प्रकार को ठीक करने के लिए आप माइग्रेशन जोड़ने का प्रयास कर सकते हैं :

def change
  change_column :reviews, :trip_id, :integer
end

और अगर वह काम नहीं करता है तो तालिका को छोड़ दें और फिर से बनाएं:

def change
  drop_table :reviews
  create_table :reviews do |t|
    #...
    t.integer :trip_id
    #...
  end
end

यदि आपके पास वह डेटा है जिसे आप संरक्षित करना चाहते हैं और change_column, तो आप अपरिष्कृत SQL के माध्यम से एक ALTER TABLE भी कर सकते हैं काम नहीं करता:

def change
  execute %q{
    alter table reviews
    alter column trip_id
    type int using cast(trip_id as int)
  }
end

यह तब तक PostgreSQL (लेकिन SQLite नहीं) में काम करना चाहिए जब तक कि आपके trip_id में कोई टूटा हुआ डेटा न हो ।

एक बार जब आप इसे सुलझा लेते हैं, तो आपको PostgreSQL स्थापित करना चाहिए और अपने विकास के माहौल को उस पर स्विच करना चाहिए। 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. SQLAlchemy का उपयोग करके PostgreSQL सरणी को अपडेट करें

  2. PostgreSQL में एक महीने में दिनों की संख्या प्राप्त करें

  3. टेम्प्लेट 1 में पोस्टग्रेज ऑब्जेक्ट जोड़ना

  4. psql में डेटाबेस कैसे स्विच करें?

  5. Django ORM में PostgreSQL सरणी फ़ील्ड को कैसे मैप करें?