VisualSVN 기반에서 Trac addon 을 통해 Trac 을 띄웠는데 뭔가 하려고 하면 이런 에러가 뜹니다..

skuld2000의 이미지

VisualSVN 최신인 2.1 버전과 마찬가지로 2.1 을 지원하는 Trac addon 을 VisualSVN 홈에서 받아 설치 했습니다.
뭔가 다른걸 한건 아니고 SVN 에서 테스트용 Repository 만들고 여기에 맞춰 Trac 설정을 해줬습니다.
그리고 제 계정에다 Admin 권한 부여하고 https://localhost/trac 접속하여 Trac 화면 뜨는 것 까지 확인했습니다.
메뉴간 이동도 잘 되고 있습니다만, 어째서인지 새로 티켓을 작성한다거나 admin 메뉴에 들어가서 설정을 수정하거나 하면 아래와 같은 에러가 발생합니다.
database 가 readonly 라는 것 같은데...
뭐 바꾼것도 없는데 왜이럴까요.
혹시 이런 현상에 대한 해결 방법을 아신다면, 부디 알려주세요~~

Warning: 
■Error writing to trac.ini, make sure it is writable by the web server. Your changes have not been saved.
■Error writing to trac.ini, make sure it is writable by the web server. Your changes have not been saved.
Oops…
Trac detected an internal error: 
OperationalError: attempt to write a readonly database
This is probably a local installation issue. 
 
Found a bug in Trac?
If you think this should work and you can reproduce the problem, you should consider reporting this to the Trac team.
 
Before you do that, though, please first try searching for similar issues, as it is quite likely that this problem has been reported before. For questions about installation and configuration of Trac, please try the mailing list instead of filing a ticket. 
 
Otherwise, please    
==== How to Reproduce ====
 
While doing a POST operation on `/admin`, Trac issued an internal error.
 
''(please provide additional details here)''
 
 
Request parameters:
{{{
{'__FORM_TOKEN': u'ee157d3f083713656fc7dc8f',
 'cat_id': None,
 'descr': u'Projcet_J Client',
 'name': u'Client',
 'panel_id': None,
 'path_info': None,
 'url': u''}
}}}
 
 
User Agent was: `Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)`
 
==== System Information ====
 
|| '''Trac''' || `0.11.6` ||
|| '''Python''' || `2.5.2 (r252:60911, Feb 21 2008, 13:11:45) [MSC v.1310 32 bit (Intel)]` ||
|| '''setuptools''' || `0.6c9` ||
|| '''SQLite''' || `3.3.4` ||
|| '''pysqlite''' || `2.3.2` ||
|| '''Genshi''' || `0.5.1` ||
|| '''mod_python''' || `3.3.1` ||
|| '''Subversion''' || `1.6.6 (r40053)` ||
|| '''jQuery:''' || `1.2.6` ||
 
==== Python Traceback ====
{{{
Traceback (most recent call last):
  File "C:\Program Files\VisualSVN Server\Trac\python\lib\site-packages\trac-0.11.6-py2.5-win32.egg\trac\web\main.py", line 450, in _dispatch_request
    dispatcher.dispatch(req)
  File "C:\Program Files\VisualSVN Server\Trac\python\lib\site-packages\trac-0.11.6-py2.5-win32.egg\trac\web\main.py", line 206, in dispatch
    resp = chosen_handler.process_request(req)
  File "C:\Program Files\VisualSVN Server\trac\python\lib\site-packages\trac-0.11.6-py2.5-win32.egg\trac\admin\web_ui.py", line 114, in process_request
    path_info)
  File "C:\Program Files\VisualSVN Server\trac\python\lib\site-packages\trac-0.11.6-py2.5-win32.egg\trac\admin\web_ui.py", line 208, in render_admin_panel
    req.redirect(req.href.admin(cat, page))
  File "C:\Program Files\VisualSVN Server\trac\python\lib\site-packages\trac-0.11.6-py2.5-win32.egg\trac\web\api.py", line 305, in redirect
    self.session.save() # has to be done before the redirect is sent
  File "C:\Program Files\VisualSVN Server\Trac\python\lib\site-packages\trac-0.11.6-py2.5-win32.egg\trac\web\session.py", line 100, in save
    (self.sid,))
  File "C:\Program Files\VisualSVN Server\trac\python\lib\site-packages\trac-0.11.6-py2.5-win32.egg\trac\db\util.py", line 64, in execute
    return self.cursor.execute(sql_escape_percent(sql), args)
  File "C:\Program Files\VisualSVN Server\trac\python\lib\site-packages\trac-0.11.6-py2.5-win32.egg\trac\db\sqlite_backend.py", line 80, in execute
    PyFormatCursor.execute(self, *args)
  File "C:\Program Files\VisualSVN Server\trac\python\lib\site-packages\trac-0.11.6-py2.5-win32.egg\trac\db\sqlite_backend.py", line 59, in execute
    args or [])
  File "C:\Program Files\VisualSVN Server\trac\python\lib\site-packages\trac-0.11.6-py2.5-win32.egg\trac\db\sqlite_backend.py", line 51, in _rollback_on_error
    return function(self, *args, **kwargs)
OperationalError: attempt to write a readonly database
 
}}}
      a new ticket at the Trac project site, where you can describe the problem and explain how to reproduce it.
 
Python Traceback
Most recent call last: 
File "C:\Program Files\VisualSVN Server\Trac\python\lib\site-packages\trac-0.11.6-py2.5-win32.egg\trac\web\main.py", line 450, in _dispatch_request 
Code fragment:    try:        if not env and env_error:            raise HTTPInternalError(env_error)        try:            dispatcher = RequestDispatcher(env)            dispatcher.dispatch(req)        except RequestDone:            pass        resp = req._response or []     except HTTPException, e:
Local variables:Name Value 
after [u'        except RequestDone:', u'            pass', u'        resp = ... 
before [u'    try:', u'        if not env and env_error:', u'            raise ... 
dispatcher <trac.web.main.RequestDispatcher object at 0x026B2E90> 
e OperationalError('attempt to write a readonly database',) 
env <trac.env.Environment object at 0x026B2F90> 
env_error None 
exc_info (<class 'sqlite3.OperationalError'>, OperationalError('attempt to write a ... 
filename 'C:\\Program Files\\VisualSVN ... 
frames [{'function': '_dispatch_request', 'lines_before': [u'    try:', u'        ... 
has_admin True 
line u'            dispatcher.dispatch(req)' 
lineno 449 
message u'OperationalError: attempt to write a readonly database' 
req <Request "POST u'/admin'"> 
resp [] 
tb <traceback object at 0x02B97238> 
tb_hide None 
traceback u'Traceback (most recent call last):\n  File "C:\\Program Files\\VisualSVN ... 
 
File "C:\Program Files\VisualSVN Server\Trac\python\lib\site-packages\trac-0.11.6-py2.5-win32.egg\trac\web\main.py", line 206, in dispatch 
Code fragment:                            req.args.get('__FORM_TOKEN') != req.form_token:                        raise HTTPBadRequest('Missing or invalid form token. '                                             'Do you have cookies enabled?')                 # Process the request and render the template                resp = chosen_handler.process_request(req)                if resp:                    if len(resp) == 2: # Clearsilver                        chrome.populate_hdf(req)                        template, content_type = \                                  self._post_process_request(req, *resp)
Local variables:Name Value 
chosen_handler <trac.admin.web_ui.AdminModule object at 0x02907D50> 
chrome <trac.web.chrome.Chrome object at 0x0289F810> 
ctype 'application/x-www-form-urlencoded' 
err (<class 'sqlite3.OperationalError'>, OperationalError('attempt to write a ... 
handler <trac.admin.web_ui.AdminModule object at 0x02907D50> 
options {} 
req <Request "POST u'/admin'"> 
self <trac.web.main.RequestDispatcher object at 0x026B2E90> 
 
File "C:\Program Files\VisualSVN Server\trac\python\lib\site-packages\trac-0.11.6-py2.5-win32.egg\trac\admin\web_ui.py", line 114, in process_request 
Code fragment:        if not provider:            raise HTTPNotFound(_('Unknown administration panel'))         if hasattr(provider, 'render_admin_panel'):            template, data = provider.render_admin_panel(req, cat_id, panel_id,                                                         path_info)         else: # support for legacy WebAdmin panels            data = {}            cstmpl, ct = provider.process_admin_request(req, cat_id, panel_id,                                                        path_info)
Local variables:Name Value 
_panel_order <function _panel_order at 0x02B6AEB0> 
cat_id 'general' 
panel_id 'basics' 
panels [('general', 'General', 'basics', 'Basic Settings'), ('general', ... 
path_info None 
provider <trac.admin.web_ui.BasicsAdminPanel object at 0x02A75AF0> 
providers {('general', 'basics'): <trac.admin.web_ui.BasicsAdminPanel object at ... 
req <Request "POST u'/admin'"> 
self <trac.admin.web_ui.AdminModule object at 0x02907D50> 
 
File "C:\Program Files\VisualSVN Server\trac\python\lib\site-packages\trac-0.11.6-py2.5-win32.egg\trac\admin\web_ui.py", line 208, in render_admin_panel 
Code fragment:         if req.method == 'POST':            for option in ('name', 'url', 'descr'):                self.config.set('project', option, req.args.get(option))            _save_config(self.config, req, self.log)            req.redirect(req.href.admin(cat, page))         data = {            'name': self.env.project_name,            'description': self.env.project_description,            'url': self.env.project_url
Local variables:Name Value 
cat 'general' 
option 'descr' 
page 'basics' 
path_info None 
req <Request "POST u'/admin'"> 
self <trac.admin.web_ui.BasicsAdminPanel object at 0x02A75AF0> 
 
File "C:\Program Files\VisualSVN Server\trac\python\lib\site-packages\trac-0.11.6-py2.5-win32.egg\trac\web\api.py", line 305, in redirect 
Code fragment:        appropriately.        """        for listener in self.redirect_listeners:            listener(self, url, permanent)                self.session.save() # has to be done before the redirect is sent         if permanent:            status = 301 # 'Moved Permanently'        elif self.method == 'POST':            status = 303 # 'See Other' -- safe to use in response to a POST
Local variables:Name Value 
listener <function _save_messages at 0x026B3430> 
permanent False 
self <Request "POST u'/admin'"> 
url '/trac/Client/admin/general/basics' 
 
File "C:\Program Files\VisualSVN Server\Trac\python\lib\site-packages\trac-0.11.6-py2.5-win32.egg\trac\web\session.py", line 100, in save 
Code fragment:                self.env.log.warning('Session %s already exists: %s' %                                      (self.sid, e))        if self._old != self:            attrs = [(self.sid, authenticated, k, v) for k, v in self.items()]            cursor.execute("DELETE FROM session_attribute WHERE sid=%s",                           (self.sid,))            self._old = dict(self.items())            if attrs:                # The session variables might already have been updated by a                 # concurrent request.                try:
Local variables:Name Value 
attrs [('allen', 1, 'chrome.warnings.0', u'Error writing to trac.ini, make sure ... 
authenticated 1 
cursor <trac.db.util.IterableCursor object at 0x02B9FB50> 
db <trac.db.pool.PooledConnection object at 0x02B88B20> 
e OperationalError('attempt to write a readonly database',) 
k 'chrome.warnings.0' 
now 1264998558 
self {} 
v u'Error writing to trac.ini, make sure it is writable by the web server. ... 
 
File "C:\Program Files\VisualSVN Server\trac\python\lib\site-packages\trac-0.11.6-py2.5-win32.egg\trac\db\util.py", line 64, in execute 
Code fragment:                return r            except Exception, e:                self.log.debug('execute exception: %r', e)                raise        if args:            return self.cursor.execute(sql_escape_percent(sql), args)        return self.cursor.execute(sql)     def executemany(self, sql, args=None):        if self.log:            self.log.debug('SQL: %r', sql)
Local variables:Name Value 
args ('allen',) 
self <trac.db.util.IterableCursor object at 0x02B9FB50> 
sql 'DELETE FROM session_attribute WHERE sid=%s' 
 
File "C:\Program Files\VisualSVN Server\trac\python\lib\site-packages\trac-0.11.6-py2.5-win32.egg\trac\db\sqlite_backend.py", line 80, in execute 
Code fragment:            PyFormatCursor.__init__(self, con)            self.rows = []            self.pos = 0         def execute(self, *args):            PyFormatCursor.execute(self, *args)            self.rows = PyFormatCursor.fetchall(self)            self.pos = 0         def fetchone(self):            try:
Local variables:Name Value 
args ('DELETE FROM session_attribute WHERE sid=%s', ('allen',)) 
self <trac.db.sqlite_backend.EagerCursor object at 0x02B98930> 
 
File "C:\Program Files\VisualSVN Server\trac\python\lib\site-packages\trac-0.11.6-py2.5-win32.egg\trac\db\sqlite_backend.py", line 59, in execute 
Code fragment:                raise        def execute(self, sql, args=None):            if args:                sql = sql % (('?',) * len(args))            return self._rollback_on_error(sqlite.Cursor.execute, sql,                                           args or [])        def executemany(self, sql, args=None):            if args:                sql = sql % (('?',) * len(args[0]))            return self._rollback_on_error(sqlite.Cursor.executemany, sql,                                           args or [])
Local variables:Name Value 
args ('allen',) 
self <trac.db.sqlite_backend.EagerCursor object at 0x02B98930> 
sql 'DELETE FROM session_attribute WHERE sid=?' 
 
File "C:\Program Files\VisualSVN Server\trac\python\lib\site-packages\trac-0.11.6-py2.5-win32.egg\trac\db\sqlite_backend.py", line 51, in _rollback_on_error 
Code fragment:    sqlite_version_string = '%d.%d.%d' % (_ver[0], _ver[1], int(_ver[2]))     class PyFormatCursor(sqlite.Cursor):        def _rollback_on_error(self, function, *args, **kwargs):            try:                return function(self, *args, **kwargs)            except sqlite.DatabaseError, e:                self.cnx.rollback()                raise        def execute(self, sql, args=None):            if args:
Local variables:Name Value 
args ('DELETE FROM session_attribute WHERE sid=?', ('allen',)) 
e OperationalError('attempt to write a readonly database',) 
function <method 'execute' of 'sqlite3.Cursor' objects> 
kwargs {} 
self <trac.db.sqlite_backend.EagerCursor object at 0x02B98930> 
 
File "C:\Program Files\VisualSVN Server\Trac\python\lib\site-packages\trac-0.11.6-py2.5-win32.egg\trac\web\main.py", line 450, in _dispatch_request
  dispatcher.dispatch(req)
File "C:\Program Files\VisualSVN Server\Trac\python\lib\site-packages\trac-0.11.6-py2.5-win32.egg\trac\web\main.py", line 206, in dispatch
  resp = chosen_handler.process_request(req)
File "C:\Program Files\VisualSVN Server\trac\python\lib\site-packages\trac-0.11.6-py2.5-win32.egg\trac\admin\web_ui.py", line 114, in process_request
  path_info)
File "C:\Program Files\VisualSVN Server\trac\python\lib\site-packages\trac-0.11.6-py2.5-win32.egg\trac\admin\web_ui.py", line 208, in render_admin_panel
  req.redirect(req.href.admin(cat, page))
File "C:\Program Files\VisualSVN Server\trac\python\lib\site-packages\trac-0.11.6-py2.5-win32.egg\trac\web\api.py", line 305, in redirect
  self.session.save() # has to be done before the redirect is sent
File "C:\Program Files\VisualSVN Server\Trac\python\lib\site-packages\trac-0.11.6-py2.5-win32.egg\trac\web\session.py", line 100, in save
  (self.sid,))
File "C:\Program Files\VisualSVN Server\trac\python\lib\site-packages\trac-0.11.6-py2.5-win32.egg\trac\db\util.py", line 64, in execute
  return self.cursor.execute(sql_escape_percent(sql), args)
File "C:\Program Files\VisualSVN Server\trac\python\lib\site-packages\trac-0.11.6-py2.5-win32.egg\trac\db\sqlite_backend.py", line 80, in execute
  PyFormatCursor.execute(self, *args)
File "C:\Program Files\VisualSVN Server\trac\python\lib\site-packages\trac-0.11.6-py2.5-win32.egg\trac\db\sqlite_backend.py", line 59, in execute
  args or [])
File "C:\Program Files\VisualSVN Server\trac\python\lib\site-packages\trac-0.11.6-py2.5-win32.egg\trac\db\sqlite_backend.py", line 51, in _rollback_on_error
  return function(self, *args, **kwargs)
 
 
System Information:
User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
 
Trac: 0.11.6 
Python: 2.5.2 (r252:60911, Feb 21 2008, 13:11:45) [MSC v.1310 32 bit (Intel)] 
setuptools: 0.6c9 
SQLite: 3.3.4 
pysqlite: 2.3.2 
Genshi: 0.5.1 
mod_python: 3.3.1 
Subversion: 1.6.6 (r40053) 
jQuery: 1.2.6 
 
TracGuide — The Trac User and Administration Guide 

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.