VisualSVN 기반에서 Trac addon 을 통해 Trac 을 띄웠는데 뭔가 하려고 하면 이런 에러가 뜹니다..
글쓴이: skuld2000 / 작성시간: 월, 2010/02/01 - 2:42오후
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
Forums:
댓글 달기