【问题标题】:SQLAlchemy/Pyramid tutorial: attempt to write to readonly databaseSQLAlchemy/Pyramid 教程:尝试写入只读数据库
【发布时间】:2013-09-16 06:20:09
【问题描述】:

我正在用头撞这个。过去我已经成功完成了 SQLAlcemy + URL Dispatch 教程。现在无论我做什么,写入sqlite db文件的尝试都失败了,抛出:

OperationalError: (OperationalError) attempt to write a readonly database u'INSERT INTO pages (name, data) VALUES (?, ?)' (u'NewPage', u'A new page is dawning.')

我当前配置的变化是:

  • 我正在运行 mod_wsgi 下的教程,而不是 pserve。
  • 在 pserve 下运行结果是一样的
  • 这个系统运行的是 python 2.6.5 vs 2.7.5

数据文件初始化良好。所有权与 wsgi 进程所有者相同。我很困惑。

这是models.py:

from sqlalchemy import (
    Column,
    Index,
    Integer,
    Text,
    )

from sqlalchemy.ext.declarative import declarative_base

from sqlalchemy.orm import (
    scoped_session,
    sessionmaker,
    )

from zope.sqlalchemy import ZopeTransactionExtension

DBSession = scoped_session(sessionmaker(extension=ZopeTransactionExtension()))
Base = declarative_base()


class Page(Base):
    __tablename__ = 'pages'
    id = Column(Integer, primary_key=True)
    name = Column(Text, unique=True)
    data = Column(Text)

    def __init__(self, name, data):
        self.name = name
        self.data = data

Index('page_index', Page.name, unique=True, mysql_length=255)

教程非常简单。

任何想法都非常感谢。

【问题讨论】:

  • 我很确定问题出在文件系统权限的某个地方

标签: sqlalchemy runtime-error pyramid readonly


【解决方案1】:

即使同一所有者创建了文件,守护进程所有者也无法写入文件。怎么回事?无论如何,在 sqlite 文件上手动设置 666 已经解决了这个问题。

【讨论】:

  • ... 这表明您的 wsgi 进程的有效用户与您认为的不同:)
猜你喜欢
  • 2021-03-02
  • 1970-01-01
  • 1970-01-01
  • 2013-04-18
  • 2016-10-20
  • 1970-01-01
  • 1970-01-01
  • 2018-05-23
  • 2015-10-27
相关资源
最近更新 更多