coiai Logo

SQLite + Alembic 「no such column」「duplicate column name」の解決法

FastAPI + SQLAlchemy + Alembic を使って開発中のエラー。備忘録がてらブログに残しておきます。


エラーその1: no such column

API 実行時に以下のエラーが出ました。

sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such column: sakes.created_by_id

テーブル sakes に必要なカラム created_by_id が存在していません。

モデルでは定義しているのに DB に反映されていない状態です。


エラーその2: duplicate column name

Alembic でマイグレーションを流そうとすると、今度はこんなエラー。

sqlite3.OperationalError: duplicate column name: password

既に users テーブルに password カラムがあるのに、再度追加しようとして失敗しています。

要するに「DB と Alembic の履歴がズレている」状態。


解決手順

1. Alembic 履歴を DB に合わせる

既に存在しているカラムについては、DB に合わせて履歴を進めるだけでOK。

poetry run alembic stamp 3ed4e13e6b65

これで「password はもうあるよ」と Alembic に教えました。


2. 新しいカラムを追加するマイグレーションを作成

不足していた sakes.created_by_id を追加するためのリビジョンを作成。

poetry run alembic revision -m "add created_by_id to sakes"

生成されたファイルに処理を追記:

def upgrade() -> None:
    with op.batch_alter_table("sakes") as batch:
        batch.add_column(sa.Column("created_by_id", sa.Integer(), nullable=True))
        batch.create_index("ix_sakes_created_by_id", ["created_by_id"])

そして適用!

poetry run alembic upgrade head

3. 確認

sqlite3 ochoko.db "PRAGMA table_info(sakes);"

ちゃんと created_by_id が入っているのを確認。

API を再実行したら 500 エラーが消えました 🎉

投稿日: 2025年9月5日
カテゴリ: FastAPI
タグ: サーバー, プログラミング
coiai

coiai

この記事もおすすめ

ポッドキャストを取った後Auditionですべきこと

ポッドキャストを取った後Auditionですべきこと

この記事はポッドキャストなどの音声コンテンツを取った後にAuditionで編集する方法について解説しています。 環境 やること 基本的に以下の4つの工程をすると、かなりクオリティアップにつながります! ノイズリダクション 無音部分を選択します。開始地点をi, 終わりをo キーを押すと選択できます。選択できたらエフェクト→ノイズリダクション/リストア→ノイズプリントをキャプチャを押します。 続いて、全体を選択します。cmd, a で全選択になります。エフェクト→ノイズリダクション/リストア→ノイズリダクションを選択します。 以下のようなパネルが表示されうので、ノイズのみをきたりして、削減ちを調整して、良い感じになったら適応ボタンを押します。 シングルバンドコンプレッサ 左のパネルのエフェクトトラックから▶️ボタンを押し、振幅と圧縮→シングルバンドコンプレッッサを選択します。 選択すると下記のようなパネルが開きます。それぞれ、 といった意味があります。設定値は下記画像のようにしています。 設定がめんどくさい場合はプリセットからラジオレベラーを選択してください。 EQ(声をクリアにする) パラメトリックイコライザーを使用します。エフェクト→フィルターとイコライザ→パラメトリックイコライザーを選択します。 私の場合は下記のように設定しています。 無音カット エフェクト→診断→無音をカットをすると左パネルに診断が表示されます。 効果を無音を削除、プリセットをポッドキャストにするとちょうどよくなると思います。設定したら、スキャンボタンを教えて、全て削除で無音がカットされます。 かなりカットされてしまうので、短いCM等に使うのはありかなという感じです。 参考 Adobe 無音カット https://helpx.adobe.com/jp/audition/using/strip-silence.html

この記事を書いた会社

株式会社coiaiは、「想像できることを美しく実現」を掲げ、XR・Web・アプリ・システム開発およびDX支援を行う会社です。 創業2022年、東京都練馬区に本社を置き、要件のヒアリングからPoC(概念実証)、本番運用まで一貫して伴走します。 まずはお気軽にご相談ください。

商号株式会社 coiai創業2022年1月設立2025年1月23日資本金1,500,000円(設立時点)本社所在地東京都練馬区関町北 3-6-9代表者代表取締役 竹村 啓佑 / 代表取締役 服部 陽良

主なご相談内容

会社概要・役員紹介を見る

詳しい会社情報は会社概要ページでご覧いただけます。

資料請求・無料相談

導入要件のヒアリングからPoC、本番運用まで伴走します。まずはお気軽にご相談ください。

お問い合わせの前に 個人情報保護方針 をご確認ください。