質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Q&A

解決済

1回答

7255閲覧

manage.py実行時に出るOperationalErrorについて

KoheiNoma

総合スコア14

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

0グッド

0クリップ

投稿2019/04/21 13:34

python manage.py migrateやpython manage.py runserver実行時に、django.db.utils.OperationalError: unable to open database fileというエラーが発生し、なかなか原因がわからないので、わかりそうな方教えていただけると幸いです。

開発環境はMacOS Sierra、python3.7、 Django2.2です。

以下エラー文です。

(sutasapo_env) USER-no-MacBook-Air-534:django-to22 noma$ python manage.py migrate Traceback (most recent call last): File "/Users/user/To22/Django/django-to22/sutasapo_env/lib/python3.7/site-packages/django/db/backends/base/base.py", line 217, in ensure_connection self.connect() File "/Users/user/To22/Django/django-to22/sutasapo_env/lib/python3.7/site-packages/django/db/backends/base/base.py", line 195, in connect self.connection = self.get_new_connection(conn_params) File "/Users/user/To22/Django/django-to22/sutasapo_env/lib/python3.7/site-packages/django/db/backends/sqlite3/base.py", line 194, in get_new_connection conn = Database.connect(**conn_params) sqlite3.OperationalError: unable to open database file The above exception was the direct cause of the following exception: Traceback (most recent call last): File "manage.py", line 15, in <module> execute_from_command_line(sys.argv) File "/Users/user/To22/Django/django-to22/sutasapo_env/lib/python3.7/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line utility.execute() File "/Users/user/To22/Django/django-to22/sutasapo_env/lib/python3.7/site-packages/django/core/management/__init__.py", line 375, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/Users/user/To22/Django/django-to22/sutasapo_env/lib/python3.7/site-packages/django/core/management/base.py", line 323, in run_from_argv self.execute(*args, **cmd_options) File "/Users/user/To22/Django/django-to22/sutasapo_env/lib/python3.7/site-packages/django/core/management/base.py", line 364, in execute output = self.handle(*args, **options) File "/Users/user/To22/Django/django-to22/sutasapo_env/lib/python3.7/site-packages/django/core/management/base.py", line 83, in wrapped res = handle_func(*args, **kwargs) File "/Users/user/To22/Django/django-to22/sutasapo_env/lib/python3.7/site-packages/django/core/management/commands/migrate.py", line 87, in handle executor = MigrationExecutor(connection, self.migration_progress_callback) File "/Users/user/To22/Django/django-to22/sutasapo_env/lib/python3.7/site-packages/django/db/migrations/executor.py", line 18, in __init__ self.loader = MigrationLoader(self.connection) File "/Users/user/To22/Django/django-to22/sutasapo_env/lib/python3.7/site-packages/django/db/migrations/loader.py", line 49, in __init__ self.build_graph() File "/Users/user/To22/Django/django-to22/sutasapo_env/lib/python3.7/site-packages/django/db/migrations/loader.py", line 212, in build_graph self.applied_migrations = recorder.applied_migrations() File "/Users/user/To22/Django/django-to22/sutasapo_env/lib/python3.7/site-packages/django/db/migrations/recorder.py", line 73, in applied_migrations if self.has_table(): File "/Users/user/To22/Django/django-to22/sutasapo_env/lib/python3.7/site-packages/django/db/migrations/recorder.py", line 56, in has_table return self.Migration._meta.db_table in self.connection.introspection.table_names(self.connection.cursor()) File "/Users/user/To22/Django/django-to22/sutasapo_env/lib/python3.7/site-packages/django/db/backends/base/base.py", line 256, in cursor return self._cursor() File "/Users/user/To22/Django/django-to22/sutasapo_env/lib/python3.7/site-packages/django/db/backends/base/base.py", line 233, in _cursor self.ensure_connection() File "/Users/user/To22/Django/django-to22/sutasapo_env/lib/python3.7/site-packages/django/db/backends/base/base.py", line 217, in ensure_connection self.connect() File "/Users/user/To22/Django/django-to22/sutasapo_env/lib/python3.7/site-packages/django/db/utils.py", line 89, in __exit__ raise dj_exc_value.with_traceback(traceback) from exc_value File "/Users/user/To22/Django/django-to22/sutasapo_env/lib/python3.7/site-packages/django/db/backends/base/base.py", line 217, in ensure_connection self.connect() File "/Users/user/To22/Django/django-to22/sutasapo_env/lib/python3.7/site-packages/django/db/backends/base/base.py", line 195, in connect self.connection = self.get_new_connection(conn_params) File "/Users/user/To22/Django/django-to22/sutasapo_env/lib/python3.7/site-packages/django/db/backends/sqlite3/base.py", line 194, in get_new_connection conn = Database.connect(**conn_params) django.db.utils.OperationalError: unable to open database file

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/04/21 13:39

回答依頼をいただいて申し訳ないのですが、Pythonはそもそも専門外なのでご期待には添えません。もう少しPython関係のスコアの高いかたに振っていただけたらと思います。 ※Web側の考え方であれば可能ではありますが今回は私が対応できそうにないです
KoheiNoma

2019/04/21 13:42

mts10806さん、丁寧にお返事ありがとうございます。承知致しました、また何かあればよろしくお願い申し上げます。
guest

回答1

0

ベストアンサー

データベースファイルを開こうとして失敗しているので、すでにデータベースファイルが存在しているとすればそれに対する読み込み(あるいは書き込み)権限がない、存在していないとすれば作成先ディレクトリに対する書き込み権限がない、といった状況だろうと思います。

こちらが参考になるかもしれません。
https://stackoverflow.com/questions/40959337/django-db-utils-operationalerror-unable-to-open-database-file

投稿2019/04/21 14:33

iwamot

総合スコア1154

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KoheiNoma

2019/04/21 15:10 編集

iwamotさん お返事ありがとうございます。状況理解しました。とりあえず一つ目の解決策を試しましたが、以下のようなエラーが出ました、原因わかりますか? また、二つ目のsudoをつける解決策は試しましたが、変わらずdjango.db.utils.OperationalError: unable to open database fileのエラーが出ました。 お答えいただけると幸いです。 ``` (sutasapo_env) USER-no-MacBook-Air-534:django-to22 noma$ sudo chown $(whoami):$(whoami) /path/to/dir/db/db.sqlite3 Password: chown: noma: illegal group name ```
iwamot

2019/04/21 23:41 編集

このコマンドが適切かどうかは別として、コマンドの意図は下記です。 sudo chown noma:所属グループ名 /path/to/dir/db/db.sqlite3 `groups` コマンドで、noma ユーザの所属グループがわかると思います。
KoheiNoma

2019/04/22 01:25 編集

ご回答ありがとうございます。 groupsコマンドで以下のようにグループを調べました。 USER-no-MacBook-Air-534:~ noma$ groups noma staff com.apple.sharepoint.group.1 everyone localaccounts _appserverusr admin _appserveradm _lpadmin _appstore _lpoperator _developer _analyticsusers com.apple.access_ftp com.apple.access_screensharing com.apple.access_ssh その後、コマンドを入力すると以下のようになりました。こちらデータベースファイルがないということなのでしょうか?もし、その場合どのようにデータベースファイルを作成すれば良いか教えていただけると幸いです。よろしくお願い申し上げます。 (sutasapo_env) USER-no-MacBook-Air-534:django-to22 noma$ sudo chown noma:staff com.apple.sharepoint.group.1 everyone localaccounts _appserverusr admin _appserveradm _lpadmin _appstore _lpoperator _developer _analyticsusers com.apple.access_ftp com.apple.access_screensharing com.apple.access_ssh /path/to/dir/db/db.sqlite3 Password: chown: com.apple.sharepoint.group.1: No such file or directory chown: everyone: No such file or directory chown: localaccounts: No such file or directory chown: _appserverusr: No such file or directory chown: admin: No such file or directory chown: _appserveradm: No such file or directory chown: _lpadmin: No such file or directory chown: _appstore: No such file or directory chown: _lpoperator: No such file or directory chown: _developer: No such file or directory chown: _analyticsusers: No such file or directory chown: com.apple.access_ftp: No such file or directory chown: com.apple.access_screensharing: No such file or directory chown: com.apple.access_ssh: No such file or directory chown: /path/to/dir/db/db.sqlite3: No such file or directory
iwamot

2019/04/22 03:37

あー、グループは1つだけ指定する前提でした。特に指定せず、下記のようにしてもよいと思います。 sudo chown noma /path/to/dir/db/db.sqlite3
KoheiNoma

2019/04/22 03:44

ありがとうございます。上記コマンドの実行結果は以下のようになりました。 (sutasapo_env) USER-no-MacBook-Air-534:django-to22 noma$ sudo chown noma /path/to/dir/db/db.sqlite3 Password: chown: /path/to/dir/db/db.sqlite3: No such file or directory
iwamot

2019/04/22 03:49

あー、/path/to/dir というのは本当にそのままのパスを入力してほしいのではなくて、「db/db.sqlite3」の存在するディレクトリのパスを入力する、という意味なんですよね…。説明不足ですみません。 要は、プロジェクトディレクトリの中に sqlite のデータベースファイルがあるなら、それへのアクセス権限を noma ユーザに与えてみてはどうか、なければデータベースファイルが作られるであろうディレクトリへの書き込み権限を noma ユーザに与えみてはどうかということです。 この辺はLinuxの使い方になるので、適当にググるなどして進めてみていただきたいです。
KoheiNoma

2019/04/23 00:10

ご丁寧にお返事ありがとうございます。 再度アプリを作り直したら、通りましたが折角なのでLinuxについての理解を深めようと思います。 お付き合いくださりありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問