「python manage.py syncdb」を実行した後、「データベースファイルを開けません」というエラーが表示されます。
これが私のsettings.pyの重要な部分です。
DATABASE_ENGINE = 'sqlite3' # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'Oracle'.
DATABASE_NAME = 'apps.db' # Or path to database file if using sqlite3.
DATABASE_USER = '' # Not used with sqlite3.
DATABASE_PASSWORD = '' # Not used with sqlite3.
DATABASE_Host = '' # Set to empty string for localhost. Not used with sqlite3.
DATABASE_PORT = '' # Set to empty string for default. Not used with sqlite3.
「apps.db」の権限は次のとおりです。
-rw-r--r-- 1 root root 33792 19. Jul 10:51 apps.db
My DjangoサーバーはApacheから呼び出されます...権限に関係するかどうかはわかりませんが、apps.dbの所有者を "www-data"に変更しても機能しませんでした。
[編集]
www-dataがこのすべてにアクセスできるようにするために、私は次のことをしました:
以下を行いました:
chown -R www-data apps
rm apps.db
su www-data
python manage.py syncdb
しかし、まだ動作しません:(
DATABASE_NAMEを絶対パスに変更することでエラーを解決しました:/var/www/apps/apps.db
。
Windowsマシンでは、バックスラッシュを次のようにエスケープする必要があります:C:\\path\\to\\database\\database_name.db
。
Apacheがデータベースの親ディレクトリにも書き込みできることを確認してください。 SQLiteはこのディレクトリに書き込むことができる必要があります。
データベースファイルのフルパスの各フォルダーが数字で始まっていないことを確認してください。/www/4myweb/db(Windows 2000で観察)。
DATABASE_NAMEが「/ Users/yourname/Sites/mydjangoproject/db/db」などのように設定されている場合は、「db」ディレクトリを最初に作成したことを確認してください。
/ tmpディレクトリが誰でも書き込み可能であることを確認してください(システム上の他のものも機能しないため、考えられない原因です)。 ls/tmp -aldはdrwxrwxrwt ...を生成するはずです。
Settings.pyで指定されたデータベースへのパスがフルパスであることを確認してください。
DATABASE_NAMEは非推奨です。現在サポートされている形式を使用する必要があります。つまり.
DATABASES = {
'default': {
'ENGINE': 'Django.db.backends.sqlite3',
'NAME': 'C:/ispdb.sqlite',
'USER': '',
'PASSWORD': '',
'Host': '',
'PORT': ''
}
また、Django Webサイト。:))から廃止された他の設定も参照してください。
私のLinuxシステムでは、プロセス所有者にdb.sqlite3とディレクトリの両方への書き込み許可を与える必要がありましたそれを含んでいた!代わりにsetfaclを使用できます!例:( https://serverfault.com/questions/484818/best-way-to-set-up-permissions-with-nginx-php-fpm-on-shared-hosting )。
(py2.7)[me @ server Django-project-container] $ ls -la djangoproject /
drwxrwxr-x. 6 root nginx 4096 Jun 14 01:05 .
drwxr-xr-x. 6 root root 4096 Jun 13 23:47 ..
-rwxrwxrwx. 1 root nginx 49152 Jun 14 01:05 db.sqlite3
さて、私はこの質問に答えました。 http://goo.gl/KAuXz
私はまったく同じ問題に直面しました。これがうまくいった私の設定です。
'ENGINE': 'Django.db.backends.sqlite3',
'NAME': '/home/neo/Django/db/data.sqlite3'
Sqlite3の場合のその他の設定は同じ/デフォルトになります。
親ディレクトリの権限を変更するには、以下の一連のコマンドを使用できます。
apache v2のApacheプロセスを確認します。
ps -ef | grep Apache | grep -v grep
ユーザー/グループはwww-dataです
chgrp www-data /path/to/mydir
chmod g+w /path/to/mydir
参照: https://askubuntu.com/questions/58725/how-do-we-know-that-a-directory-is-Apache-writable