मैं psycopg2 के साथ पायथन का उपयोग कर रहा हूं और मैं एक दैनिक ऑपरेशन के बाद एक पूर्ण VACUUM
चलाने की कोशिश कर रहा हूं जो कई हजार पंक्तियों को सम्मिलित करता है।PostgreSQL - लेनदेन ब्लॉक के बाहर कोड से VACUUM कैसे चलाएं?
psycopg2.InternalError: VACUUM cannot run inside a transaction block
मैं इस कोड से कोई लेन-देन ब्लॉक के बाहर चला सकता हूँ: समस्या जब मैं अपने कोड मैं निम्नलिखित त्रुटि मिलती भीतर VACUUM
आदेश चलाने का प्रयास है?
class db(object):
def __init__(dbname, host, port, user, password):
self.conn = psycopg2.connect("dbname=%s host=%s port=%s \
user=%s password=%s" \
% (dbname, host, port, user, password))
self.cursor = self.conn.cursor()
def _doQuery(self, query):
self.cursor.execute(query)
self.conn.commit()
def vacuum(self):
query = "VACUUM FULL"
self._doQuery(query)
अंत ट्रांज़ेक्शन भेजने का प्रयास करें? – nosklo
@ नोस्क्लो, अच्छा सुझाव, लेकिन पोस्टग्रेज़ दस्तावेज़ों के अनुसार जो COMMIT के समान है। –
क्या आप किसी भी मौके से SQLAlchemy का उपयोग कर रहे हैं? मैंने एक समान समस्या का अनुभव किया क्योंकि autocommit = SqlAlchemy में True को वास्तव में * लेनदेन बंद नहीं करता है। 'Set_isolation_level' का उपयोग करना एक ऐसा काम है जो psycopg2 कनेक्शन के आंतरिक तरीकों तक पहुंचता है। –