【Mac】「python manage.py init_db」で「cannot open DB[1]: com.almworks.sqlite4java.SQLiteException」と出る時の対処方法

プログラミング,python

python manage.py init_dbでエラー発生

「動かして学ぶ!Pythonサーバレスアプリ開発入門」 という書籍を購入しました。

その中でリスト7.5 manage.py のところ、DynamoDB localを動かすためのコードで「python manage.py init_db」というコマンドを実行するのですが、エラーがでて進めなかったので手こずりました。

同じようにエラーが出ている人もきっといると思うので備忘録として残しておきます。

今回のエラーが発生した書籍

動かして学ぶ!Pythonサーバレスアプリ開発入門
Pythonを動かせるようになったけど、自動で実行されてサーバーレスなものは作れないかなぁと思っていたら最適な一冊を見つけました。内容的にPython初心者には少しきついかもしれませんが、書籍の内容は丁寧なので進めやすいとは思います。


スペック

MacBook Air (M1, 2020)

アーキテクチャ:arm64

自身のアーキテクチャを確認するコマンドは以下。

参考:Macに搭載されているCPUのアーキテクチャを確認する方法

ただ、今回のエラーはこれが原因だったのですが・・・。

結論:JDKはx64をインストールしなければならない

自身のmacのアーキテクチャが「arm64」だったため、JDKのインストーラーは「Arm64 DMG Installer」を選びました。

インストール先:https://www.oracle.com/java/technologies/downloads/#jdk17-mac

しかし結論から述べるとここは「x64 DMG Installer」を選んでください。

そうしないとmanage.pyを動かすときにエラーが出ました。

エラー文

JDKを再インストールする

一度「arm64」のJDKを入れてしまっているので、x64のJDKを入れる前にアンインストールします。

アンインストールはディレクトリを消すだけで完了するのでrmコマンドを実行だけでOKです。

まずJDKがインストールされているディレクトリがどこかを確認します。

確認するコマンドは以下。

ディレクトリが確認できたら以下のコマンドを実行しましょう。

-rfオプションの後には、自身の環境のJDKのインストール先のディレクトリを指定してください。

これでアンインストールは完了です。

あとはオラクルのページを開きx64のインストーラーで改めてJDKを入れます。

そうすると書籍の「python manage.py init_db」が実行できました。

参考文献

Pythonは日本語の文献も増えていますが個別のエラーに対する対応方法については英語のサイトの方がヒントが落ちていますね。

今回のエラーも英語圏のサイトがヒントになりました。

https://stackoverflow.com/questions/66635424/dynamodb-local-setup-on-m1-apple-silicon-mac