[英]Obtain server error for Flask development server when deployed on Gcloud but works fine as local server due to permission
錯誤:sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) 嘗試寫入只讀數據庫 2019-12-17 10:12:11 default[20191217t021035] [SQL: INSERT INTO post (title, date_posted, content, user_id) VALUES ?, ?, ?, ?)] 2019-12-17 10:12:11 default[20191217t021035] [參數:('hi', '2019-12-17 10:12:11.435775', 'hi', 3 ] 2019-12-17 10:12:11 default[20191217t021035](此錯誤的背景: http ://sqlalche.me/e/e3q8)
應用程序.yaml
runtime: python37
env: standard
handlers:
- url: /main.css
static_dir: static/*
expiration: "1h"
runtime_config:
python_version: 3.7
# This configures Google App Engine to serve the files in the app's static
# directory.
#beta_settings:
# cloud_sql_instances: flask-journal:us-west1:flask-project1
entrypoint: gunicorn -b :$PORT run:app
配置文件
import os
class Config:
SECRET_KEY = '[a correct key]'
SQLALCHEMY_DATABASE_URI = 'sqlite:///site.db'
# E-Mail with Flask
MAIL_SERVER = 'smtp.googlemail.com'
MAIL_PORT = 587
MAIL_USER_SSL = True
# Need to set environment variable
MAIL_USERNAME = os.environ.get('EMAIL_USER')
MAIL_PASSWORD = os.environ.get('EMAIL_PW')
MAIL_DEFAULT_SENDER = os.environ.get('EMAIL_USER')
然后我還有一個 site.db 數據庫所在的位置。 使用后
gcloud app deploy
該網站托管,但我無法進行任何會更改數據庫的操作。 鑒於上面顯示的錯誤輸出,我幾乎可以肯定這是一個權限錯誤。 我看到了您可以在 Linux 上執行 chmod 的解決方案,但是您在 Windows 10 上做什么? 我猜現在不再允許(甚至登錄)更改數據庫的“用戶”在執行時寫入數據庫
db.commit()
Google Cloud 運行時的文件系統是只讀的 ( https://cloud.google.com/appengine/docs/standard/python3/runtime#filesystem ):
運行時包括一個完整的文件系統。 文件系統是只讀的,但位置
/tmp
除外,它是一個虛擬磁盤,用於在 App Engine 實例的 RAM 中存儲數據。
/tmp
(注意 SQLAlchemy DB URI 中的四個斜杠表示絕對文件路徑):SQLALCHEMY_DATABASE_URI = 'sqlite:////tmp/site.db'
SQLALCHEMY_DATABASE_URI = 'postgres://<db_user>:<db_pass>@/<db_name>?unix_sock=/cloudsql/<cloud_sql_instance_name>/.s.PGSQL.5432'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.