попытка записи базы данных только для чтения - приложение Django развернуто в App Engine (БД SQLite3) - PullRequest
0 голосов
/ 09 апреля 2020

Я разместил приложение Django в стандартной среде App Engine. Когда я пытаюсь войти в систему, он выдает ошибку «попытка записи базы данных только для чтения». Я добавил URL в РАЗРЕШЕННЫЕ ХОСТЫ и добавил в учетные данные администратора в DATABASE в settings.py. Все остальное работает как задумано.

app.yaml

# [START django_app]
runtime: python37
service: hellotest1

handlers:
# This configures Google App Engine to serve the files in the app's static
# directory.
- url: /static
  static_dir: static/
# This handler routes all requests not caught above to your main app. It is
# required when static routes are defined, but can be omitted (along with
# the entire handlers section) when there are no static files defined.
- url: /.*
  script: auto
# [END django_app]

settings.py - Базы данных и ALLOWED_HOSTS

ALLOWED_HOSTS = ['url']

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        'USER': 'admin',
        'PASSWORD': 'admin',

    }
}

1 Ответ

0 голосов
/ 12 апреля 2020

Файловая система на экземплярах AppEngine доступна только для чтения (кроме каталога /tmp iir c). Однако даже если бы это было доступно для записи, использование SQLite в этом сценарии не будет работать долгое время, потому что при развертывании новой версии приложения создается новый экземпляр, но ваша база данных (файл) остается на старой только экземпляр. Это может быть проблемой, если у вас будет более одного экземпляра - каждый из них должен иметь свою собственную базу данных. Это просто не сработает, вам нужно создать экземпляр Postgres или MySQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...