اذهب إلى المحتوى

السؤال

نشر (معدل)

عندما أحاول اختبار أي تطبيق جانغو Django باستخدام الأمر fabric، والذي يستخدم هذا الأمر:

python manage.py test myapp

يظهر لي هذا الخطأ:

Creating test database for alias 'default'...
Got an error creating the test database: permission denied to create database

Type 'yes' if you would like to try deleting the test database 'test_mydb', or 'no' to cancel

يبدو أن الأمر syncdb يعمل. لكن بالرغم من ذلك لا يعمل الأمر السابق،

هنا إعدادات قاعدة البيانات الخاصة بي في ملف settings.py:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2', 'oracle'.
        'NAME': 'mydb',
        'USER': 'myusername',
        'PASSWORD': 'mypassword',
        'HOST': '127.0.0.1',
        'PORT': '',
    }
}

ما سبب هذه المشكلة وكيف أقوم بحلها؟

تم التعديل في بواسطة Adam Ebrahim

Recommended Posts

  • 0
نشر

عندما يقوم جانغو Django بتشغيل مجموعة الاختبار test suit، فإنه ينشئ قاعدة بيانات جديدة، في حالتك اسم قاعدة البيانات test_mydb. مستخدم postgres الذي يحمل اسم المستخدم myusername ليس لديه إذن بإنشاء قاعدة بيانات، ومن هنا ظهرت رسالة الخطأ.

عندما تقوم بتشغيل الأمر syncdb ، فإن جانغو Django لا يحاول إنشاء قاعدة بيانات جديدة ويستخدم قاعدة البيانات mydb، لذلك لن تحصل على أي أخطاء.

يمكنك إضافة إذن إنشاء قواعد بيانات إلى المستخدم myusername عن طريق تشغيل الأمر التالي في postgres shell كمستخدم مسئول adminsitrator/super user :

ALTER USER myusername CREATEDB;

ملاحظة: يجب أن يطابق اسم المستخدم في الأمر السابق اسم مستخدم قاعدة البيانات في ملفات إعدادات جانغو Django.

  • 0
نشر (معدل)

 

هناك طريقة أخرى لفعل هذا عن طريق تجربة الكود التالي:

    DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2', 
        'NAME': 'finance',                     
        'USER': 'django',                      
        'PASSWORD': 'mydb123',                 
        'HOST': '127.0.0.1',                    
        'PORT': '',                      
        'TEST': {
            'NAME': 'test_finance',
        },
    }
}

ثم بعد ذلك تقوم ببدء ال SQL خاصتك كالتالي:

mysql -u root -p

ثم اعط كل الصلاحيات للكود كالتالي:

GRANT ALL PRIVILEGES ON test_finance.* TO 'django'@'localhost';

وسوف يقوم django بعمل الاختبار دون اي مشاكل.

تم التعديل في بواسطة Ahmed Sharshar
  • 0
نشر

إذا كانت قاعدة البيانات هي mysql ، فيمكنك القيام بهذان الامران لحل الامر

  • افتح الملف الموجود في المسار التالي
    mysite/mysite/settings.py

    يجب أن تحتوي إعدادات قاعدة البيانات الخاصة بك على كائن TEST إضافي كما هو موضح في projectname_test

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'myproject',
            'USER': 'chandan',
            'PASSWORD': 'root',
            'HOST': 'localhost',
            'PORT': '3306',
            'TEST': {
                'NAME': 'myproject_test',
            },
        }
    }

     

  • 2- اكتب الأمر التالي باستخدام موجه أوامر mysql أو mysql workbench لمنح جميع الامتيازات للمستخدم المحدد في settings.py.

    GRANT ALL PRIVILEGES ON myproject_test.* TO 'chandan'@'localhost';

     

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...