2014-01-11 89 views
0

我在django的sqlite3有問題。這是我第一次使用這個。「無法打開數據庫文件」在django

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.sqlite3', 
     'NAME': '/home/djangobook/mydb.db', 
     'USER': '', 
     'PASSWORD': '', 
     'HOST': '', 
     'PORT': '', 
    } 
} 

錯誤:

Traceback (most recent call last): 
    File "<console>", line 1, in <module> 
    File "/usr/local/lib/python2.7/dist-packages/django/db/backends/__init__.py", line 324, in cursor 
    cursor = self.make_debug_cursor(self._cursor()) 
    File "/usr/local/lib/python2.7/dist-packages/django/db/backends/sqlite3/base.py", line 306, in _cursor 
    self._sqlite_create_connection() 
    File "/usr/local/lib/python2.7/dist-packages/django/db/backends/sqlite3/base.py", line 296, in _sqlite_create_connection 
    self.connection = Database.connect(**kwargs) 
OperationalError: unable to open database file 

感謝您的幫助。

+0

您是否已經運行過syn​​cdb? –

+0

嗨,親愛的。不,這是什麼? – user1788781

+0

你是以用戶djangobook身份運行嗎?你有寫訪問給定的路徑嗎? – sk1p

回答

2

您沒有在同一水平比manage.py這個控制檯運行運行syncdb

到應用程序文件夾:

python manage.py syncdb 

爲了更好地理解的Django的,按照這個tutorial的方式你必須寫入文件夾的權限。

+0

謝謝,但它的結果:python manage.py syncdb --- >>「OperationalError:無法打開數據庫文件」 – user1788781

2

您需要對/ home/djangobook /目錄和/home/djangobook/mydb.db文件(存在)進行寫入訪問。

如果/home/djangobook/mydb.db文件不存在,您需要像@ user1788781指出的那樣運行python manage.py syncdb。

+0

謝謝,但它的結果: python manage.py syncdb --- >>「OperationalError:無法打開數據庫文件」 – user1788781

+0

好的,所以一定要確保/ home/djangobook /目錄存在和你的用戶有寫訪問/ home/djangobook /。 – Ferran

+0

我有根訪問:( – user1788781

1

快速回答,因爲有一個其他的可能性,打石頭部署(石墨的Web用戶界面是httpd + django)時打我。 即使配置了完整路徑,數據庫文件和目錄的權限都可以,但您可能需要使用Selinux強制。

如果需要SELinux強制,對不起,我不能提供細節,現在如何使設置生效,但如果是意外啓用只是做:

root # getenforce 
Enforcing 
root # setenforce 0 
root # getenforce 
Permissive 

一個提示,調試這個問題更深並確認它是與您可以使用的權限有關的問題strace

$ sudo service httpd stop 
$ sudo strace -f service httpd start 2>&1 | tee tmp.log 

# strace log could contain something similar to the following: 
$ grep mydb.db tmp.log 
.... stat("/home/djangobook/mydb.db", 0x7fff55023b80) = -1 EACCES (Permission denied) 
.... open("/home/djangobook/mydb.db", O_RDWR|O_CREAT, 0644) = -1 EACCES (Permission denied) 
相關問題