fly.ioで苦労した話


Herokuの無料枠がなくなって一年ぐらいになりますが、自分用のサービス(pythonのpyramidフレームワークを使って大昔に作ったもの)をとりあえずrenderに移したあと放置してたものを、再度fly.ioで動くようにしたときの事

fly.io への登録からflyctl launch までは順調に(https://zenn.dev/hokawa/articles/65ddcd9974448c を参考に)。ローカルディレクトリにできたProcfileはherokuに使ったものをそのまま。flyctl deployってgitに関係なくアップロードするんですね。

deployでファイルのアップロード後に泣かされたのは

sqlalchemy.exc.NoSuchModuleError: Can’t load plugin: sqlalchemy.dialects:postgresが出る

https://zenn.dev/3w36zj6/scraps/ebb3a8bf494aa4

この内容を反映させるために、アプリの最初の方で

os.environ['DATABASE_URL'] = os.environ["DATABASE_URL"].replace("postgres://", "postgresql://")

を挿入

もう一点、postgresqlのテーブル作成とデータ挿入をコードからではなく、fly postgres connect -a <postgresqlアプリ名>で接続してSQLを流し込んで行ったのですが、そのテーブルが見つかりません(relation does not exist)エラー

http://【PostgreSQL】テーブルが存在するのにリレーション存在しません(relation does not exist)と表示される – buralog https://buralog.jp/postgresql-relation-does-not-exist-error/

に書かれてる、大文字小文字やサーチパスは問題なかったのですが、

fly.io postgres: relation “table_name” does not exist. の解決
https://zenn.dev/yutorse/articles/0a7dfcef4b0d05

の別のデータベースにテーブルを登録してしまっている。が該当したので、こちらのサイトにはflyctl proxy~なるコマンドが書かれてますが、ここはうまくいかなかったため、普通にfly postgres connectしたあとでpsqlのコマンド\c を使ってデータベースを切り替えたあとで再度SQLを流したところ、うまく動き出しました

あ、あとはrequirement.txtでpsycopg2がうまく入れられなかったのでpsycopg2-binaryに変更したような気がします


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)