2011-07-19 79 views
1

我一直试图让Django在Mac服务器上由mod_wsgi提供服务。我知道Django可以连接到数据库(因为我可以将权限从只读切换到读/写,并看到错误消息更改),但我得到一个错误无法连接到数据库。我在服务器上使用SQLite v 3.6.12。显示错误页面中报告导致错误的SQL。唯一的例外位置/Library/Python/2.6/site-packages/django/db/backends/sqlite3/base.py在执行时,线路234Django管理员不喜欢SQL插入

的是,在回溯过去的来电显示出来的错误是

cursor <django.db.backends.util.CursorDebugWrapper object at 0x102c16a50> 
self <django.db.models.sql.compiler.SQLInsertCompiler object at 0x102c16910> 
params ('d59df55372475754aa91299d0c5662b6','NmNlOThlYTVjYTIwYWZjZDgwMzFiMTMxZThjZmRhYzg3NDQ3MzcwYzqAAn1xAVUKdGVzdGNvb2tp\nZXECVQZ3b3JrZWRxA3Mu\n',u'2011-08-02 18:25:48.426508') 
result_type None 
sql 'INSERT INTO "django_session" ("session_key", "session_data", "expire_date") VALUES (%s, %s, %s)' 

与错误OperationalError(“无法打开数据库文件”)

如何去调试呢?

+0

那么在切换权限时,您会得到哪两种类型的错误?你现在有文件处于可写模式吗?请记住,服务器可能会使用一些特定的用户进行操作。像Linux下的'www-data',不知道mac用什么。 – julkiewicz

+0

只是为了确定我正确识别了我只读的文件。该错误然后试图写入只读文件。当我将它设置为读写的所有人时,错误无法连接。 Django尝试插入时发生错误。 – kd4ttc

回答

4

对于SQLite数据库,数据库文件及其所包含的目录必须是可写的,以便用户尝试使用它。

+0

+1我也观察到了。 – julkiewicz

+0

你以前做过这件事,不是吗?我不得不说,这是最令人惊叹的网站。我有一个问题,真的不知道要问什么问题。我弹出一些调试输出,我希望是相关的,并表明我已经做了一些分析。向上弹出这个指向它的一行答案,并在几个小时内显示出来。惊人! – kd4ttc

+0

格雷厄姆第一次得到它,julkiewicz得到荣誉提及。原因是SQLite在目录中写入一个临时文件来处理回滚和提交。一旦格雷厄姆提到这一点,我完全理解发生了什么。通过修复权限确认答案正确无误。谢谢!!! – kd4ttc