【问题标题】:django.db.utils.operationalerror unable to open database filedjango.db.utils.operationalerror unable to open database file
【发布时间】:2022-12-01 20:37:00
【问题描述】:

I have been struggling finding a solution to my issue "django.db.utils.operationalerror unable to open database file ".

I have changed permissions and set my path to an absolute one yet still have the same error.

this is my settings.py file

"""
Django settings for bastionblog project.

Generated by 'django-admin startproject' using Django 4.1.3.

For more information on this file, see
https://docs.djangoproject.com/en/4.1/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/4.1/ref/settings/
"""

from pathlib import Path
import os
from main import constants

# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
TEMPLATES_DIRS = os.path.join(BASE_DIR,'templates')


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/4.1/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = constants.SECRET_KEY

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

ALLOWED_HOSTS = ['77.68.125.183']


# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'main'
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'bastionblog.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [TEMPLATES_DIRS],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

WSGI_APPLICATION = 'bastionblog.wsgi.application'


# Database
# https://docs.djangoproject.com/en/4.1/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': constants.ENGINE,
        'NAME': constants.NAME, 
        'USER': constants.USER,
        'PASSWORD': constants.DB_PASSWORD,
        'HOST': constants.ENGINE,
        'PORT': constants.PORT,
    }
}




# Password validation
# https://docs.djangoproject.com/en/4.1/ref/settings/#auth-password-validators

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]


# Internationalization
# https://docs.djangoproject.com/en/4.1/topics/i18n/

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_TZ = True


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/4.1/howto/static-files/

STATIC_URL = 'static/'

STATICFILES_DIRS = ((os.path.join(BASE_DIR, 'static')), )

STATIC_ROOT  = os.path.join(BASE_DIR, 'staticfiles')
# Default primary key field type
# https://docs.djangoproject.com/en/4.1/ref/settings/#default-auto-field

DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'

this is my constants.py file (imports sensitive variables)

ENGINE = 'django.db.backends.sqlite3'

NAME = '/var/lib/mysql/bastionblog'

USER = 'admin'

PORT = '3306'

Any help is greatly appreciated

【问题讨论】:

    标签: html sql django database ubuntu


    【解决方案1】:

    You're trying to access a MySQL database with the SQLite driver.

    To use the MySQL driver:

    pip install mysqlclient

    Then in your settings.py:

    DATABASES = {  
        'default': {  
            'ENGINE': 'django.db.backends.mysql',  
            'NAME': 'your_database_name',  
            'USER': 'your_database_user',  
            'PASSWORD': 'your_password',  
            'HOST': '127.0.0.1',  
            'PORT': '3306',  
        }  
    }  
    

    Also, NAME = '/var/lib/mysql/bastionblog' is wrong. You don't need to enter a path, just the database name.

    【讨论】:

      猜你喜欢
      • 2020-02-09
      • 1970-01-01
      • 2020-05-27
      • 1970-01-01
      • 2021-09-28
      • 2022-12-26
      • 2018-05-18
      • 2022-12-02
      • 2021-12-07
      相关资源
      最近更新 更多