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

Django डेटाबेस नहीं छोड़ सकता:psycopg2.OperationalError:वर्तमान में खुले डेटाबेस को नहीं छोड़ सकता

TL;DR

यदि आप केवल समाधान चाहते हैं, तो यह है। सुनिश्चित करें कि आपके पोस्टग्रेज सर्वर में "पोस्टग्रेज" डेटाबेस है। आप psql . के माध्यम से कनेक्ट करके देख सकते हैं , और चल रहा है /list या /l . आप चलाकर डेटाबेस बना सकते हैं:CREATE DATABASE postgres psql में।

विस्तारित

Django आपके DATABASES में निर्दिष्ट "डिफ़ॉल्ट" डेटाबेस से "प्रारंभिक प्रश्न" (संभवतः परीक्षण डेटाबेस बनाने जैसी चीजें) नहीं चलाना पसंद करता है स्थापना। इसे उत्पादन डेटाबेस माना जाता है, इसलिए यह Django के सर्वोत्तम हित में होगा कि वहां गड़बड़ न करें।

यही कारण है कि परीक्षणों की शुरुआत में, यह दिखाया गया है (मेरे फाइल सिस्टम को अनदेखा करें):

    /Users/dcgoss/Desktop/Pickle/PickleBackend/venv/lib/python3.4/site-packages/django/db/backends/postgresql/base.py:247: 
    RuntimeWarning: Normally Django will use a connection to the 'postgres' database to avoid running initialization queries against the production database when it's not needed 
    (for example, when running tests). Django was unable to create a connection to the 'postgres' database and will use the default database instead.
    RuntimeWarning

Django आपके DATABASES में निर्दिष्ट होस्ट पर "postgres" नाम के डेटाबेस की तलाश करता है सेटिंग्स, यह वह जगह है जहां यह आपके परीक्षण डेटाबेस को बनाने और हटाने के लिए क्वेरी चलाता है। (नोट:Django को आपकी सेटिंग्स में स्पष्ट रूप से निर्दिष्ट करने के लिए "पोस्टग्रेज" डेटाबेस की आवश्यकता नहीं है, यह केवल आपकी सेटिंग्स में निर्दिष्ट डेटाबेस सर्वर पर इसकी तलाश करता है)।

ऐसा प्रतीत होता है कि यदि यह "पोस्टग्रेज" डेटाबेस मौजूद नहीं है, तो Django परीक्षण डेटाबेस बना सकता है और परीक्षण चला सकता है, लेकिन यह परीक्षण डेटाबेस को हटा नहीं सकता है। ऐसा इसलिए हो सकता है क्योंकि पोस्टग्रेस आपको उस डेटाबेस को छोड़ने की अनुमति नहीं देता है जिससे आप वर्तमान में जुड़े हुए हैं, हालांकि मुझे ऐसा लगता है कि ऐसा कोई कारण नहीं है कि Django परीक्षण डेटाबेस को "डिफ़ॉल्ट" (उत्पादन) डेटाबेस में निर्दिष्ट नहीं कर सका सेटिंग्स। मुझे लगता है कि यह परीक्षण डेटाबेस बनाने के लिए "डिफ़ॉल्ट" डेटाबेस का उपयोग कर रहा है, इसलिए ऐसा लगता है कि ऐसा कोई कारण नहीं है कि वह इसे हटा भी नहीं सकता।

भले ही, समाधान केवल एक साधारण SQL कथन के साथ उस "पोस्टग्रेज" डेटाबेस को बनाने के लिए था:CREATE DATABASE postgres . उसके बाद डेटाबेस बनाया गया, सब कुछ ठीक रहा।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. रेल में सभी तालिकाओं को छोटा करने के लिए रेक कार्य 3

  2. अपने डेटाबेस को PostgreSQL संस्करण 10 में अपग्रेड करना - आपको क्या पता होना चाहिए

  3. बैच के साथ बैचअपडेट अपवाद को संभालना

  4. पोस्टग्रेज डिफरेंशियल टूल

  5. SQL:ENUM बनाम एक-से-अनेक संबंध के लाभ?