2010-03-10 117 views
1

當我與mod_wsgi的運行Apache我的Django項目,我收到這樣的事情:Django的+ mod_wsgi的+ APACHE

[Wed Mar 10 08:46:43 2010] [error] [client 10.13.1.145] Traceback (most recent call last): 
     [Wed Mar 10 08:46:43 2010] [error] [client 10.13.1.145] File "/usr/local/lib/python2.6/site-packages/Django-1.1.1-py2.6.egg/django/core/handlers/wsgi.py", line 245, in __call__ 
     [Wed Mar 10 08:46:43 2010] [error] [client 10.13.1.145]  response = middleware_method(request, response) 
     [Wed Mar 10 08:46:43 2010] [error] [client 10.13.1.145] File "/usr/local/lib/python2.6/site-packages/Django-1.1.1-py2.6.egg/django/contrib/sessions/middleware.py", line 28, in process_response 
     [Wed Mar 10 08:46:43 2010] [error] [client 10.13.1.145]  if request.session.get_expire_at_browser_close(): 
     [Wed Mar 10 08:46:43 2010] [error] [client 10.13.1.145] File "/usr/local/lib/python2.6/site-packages/Django-1.1.1-py2.6.egg/django/contrib/sessions/backends/base.py", line 229, in get_expire_at_browser_close 
     [Wed Mar 10 08:46:43 2010] [error] [client 10.13.1.145]  if self.get('_session_expiry') is None: 
     [Wed Mar 10 08:46:43 2010] [error] [client 10.13.1.145] File "/usr/local/lib/python2.6/site-packages/Django-1.1.1-py2.6.egg/django/contrib/sessions/backends/base.py", line 63, in get 
     [Wed Mar 10 08:46:43 2010] [error] [client 10.13.1.145]  return self._session.get(key, default) 
     [Wed Mar 10 08:46:43 2010] [error] [client 10.13.1.145] File "/usr/local/lib/python2.6/site-packages/Django-1.1.1-py2.6.egg/django/contrib/sessions/backends/base.py", line 172, in _get_session 
     [Wed Mar 10 08:46:43 2010] [error] [client 10.13.1.145]  self._session_cache = self.load() 
     [Wed Mar 10 08:46:43 2010] [error] [client 10.13.1.145] File "/usr/local/lib/python2.6/site-packages/Django-1.1.1-py2.6.egg/django/contrib/sessions/backends/db.py", line 18, in load 
     [Wed Mar 10 08:46:43 2010] [error] [client 10.13.1.145]  return self.decode(force_unicode(s.session_data)) 
     [Wed Mar 10 08:46:43 2010] [error] [client 10.13.1.145] File "/usr/local/lib/python2.6/site-packages/Django-1.1.1-py2.6.egg/django/contrib/sessions/backends/base.py", line 93, in decode 
     [Wed Mar 10 08:46:43 2010] [error] [client 10.13.1.145]  encoded_data = base64.decodestring(session_data) 
     [Wed Mar 10 08:46:43 2010] [error] [client 10.13.1.145] File "/usr/local/lib/python2.6/base64.py", line 321, in decodestring 
     [Wed Mar 10 08:46:43 2010] [error] [client 10.13.1.145]  return binascii.a2b_base64(s) 
[Wed Mar 10 08:46:43 2010] [error] [client 10.13.1.145] Error: Incorrect padding 

有任何建議,線索或解決方案?

回答

0

聽起來像django_session表中的條目之一可能是畸形的。檢查表格並移除破損的行,或者如果可以忍受的話,可以完全截斷表格。

+0

解決這個問題。在第一次運行錯誤ocure 。syncdb只在第一次測試之前完成 – hubertus 2010-03-10 21:07:40

+0

問題出在數據庫上。謝謝 – hubertus 2010-03-11 15:37:24

0

下面是地方一些建議看看:

  1. 你在回溯點/usr/local/lib/python2.6/路徑...也許你建mod_wsgi使用不同版本的Python,尤其是系統安裝的版本可能是在/usr/lib/pythonX.X。當構建mod_wsgi你需要使用這樣的:

    的./configure --with-蟒蛇=在/ usr/local/bin目錄/ python2.6的

  2. 檢查Apache的錯誤日誌,看看是否有任何有用的消息在那裏,尤其是那些記錄在mod_wsgi Installation Issues

  3. 當您運行syncdb時,即使是「第一次」,您是否看到關於正在創建的驗證表的消息?也許你仍然有一箇舊的權威性表在數據庫中,可以通過一般的開發服務器做工精細完全刪除了數據庫,並從頭開始(或做類似manage.py reset

+0

關於(1),如果mod_wsgi是針對系統Python構建的,它應該在運行時發現它沒問題。通常是編譯爲使用替代版本但仍然在運行時發現系統的問題,它使用/ usr/local版本表明這不是問題,除非他們犯了以某種方式手動設置sys.path的錯誤以便在安裝時查看不同於mod_wsgi的Python版本的目錄。所以混合安裝可能是一個問題,但它會要求他們引起問題。 – 2010-03-11 02:12:31

+0

問題出在數據庫中。感謝您的幫助 – hubertus 2010-03-11 15:34:24

+0

走在前面,有時像Track等其他應用程序使用mod_python而不是mod_wsgi。當mod_python加載我們期望運行mod_wsgi的python的其他實例時,可能會出現問題 – hubertus 2010-03-11 19:02:30