基本的に、この記事で説明されているのと同じエラーが発生していますが、根本的な原因が異なると考えられるため、解決策がうまくいきません。
データベースパスを絶対に定義しました:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': '/var/www/myapp/database.db', # Or path to database file if using sqlite3.
'USER': '', # Not used with sqlite3.
'PASSWORD': '', # Not used with sqlite3.
'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '', # Set to empty string for default. Not used with sqlite3.
}
}
それでも、そのようなテーブルはありません: django_session.
を実行するmanage.py runserver
と、エラーが発生しません。
何かを試すために他にもいくつかのことをしましたが、役に立ちませんでした:
- manage.py リセット セッション
- データベースを削除し、syncdbで再作成しました
- chown apache:apache database.db を試し、親ディレクトリ chown -R apache:apache myapp/ にも試しました
- chmod 777 database.db を試しました
私のApache設定は次のようになります:
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /var/www/html/
</VirtualHost>
<VirtualHost *:80>
ServerName myserver.mydomain.local
ServerAlias myserver.mydomain.local
DocumentRoot /var/www/myapp
WSGIScriptAlias / /var/www/myapp/myapp/wsgi.py
<Directory "/var/www/myapp/">
Allow from all
</Directory>
</VirtualHost>
/myapp を 2 回書いているのは、最初のファイルには DB ファイルと manage.py だけが含まれているためです。wsgi.py を含むアプリを含むその下のフォルダー
また、これを Apache で実行するには wsgi.py に次の 2 行を追加する必要がありますが、manage.py からアプリを実行する場合は追加する必要はありません。
import sys
sys.path.append(os.path.abspath(os.path.dirname(__file__) + "/../"))