問題タブ [alembic]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - alembic を使用して移行中にローカル データベースと heroku データベースが同期しなくなる
私はherokuでホストされているFlaskとAngularを使ってアプリを構築しています。heroku postgresql の移行に問題があります。私はalembicの小さなラッパーであるflask-migrateを使用しています。ローカルではすべて問題ありません。heroku run upgradealembic アップグレード コマンドを実行すると、例外が発生しました。
簡単に言うと、alembic はデータベースを作成する最初の移行から実行しようとしています。またはリビジョン番号で適切なリビジョンを明示的に設定しようとしましheroku run python manage.py db upgrade +2たが、例外は同じです。
私の推測では、Heroku リビジョンのエフェメラル ファイルシステムが保存されていないためだと思いますが、リビジョンを明示的に設定すれば問題ないはずですよね? :)
現在のリビジョンの先頭を設定するにはどうすればよいですか?
関連するコードは次のとおりです。
プロファイル:
models.py
python - Alembic --autogenerate が失敗する
私が実行しているコマンド:
次の結果が得られます。
I'm really not sure what might be going wrong here. I'm trying with Postgres 9.2, SQLAlchemy 0.8.4, and Alembic 0.6.1. But I've seen the same result with Postgres 9.3, SQLAlchemy 0.9, and Alembic 0.6.2. We are using custom database schemas, if that makes a difference.
python - 複数の Postgres スキーマの Alembic サポート
Alembic を使用して、SQL Alchemy モデルでハードコーディングされていない複数の--autogeneratePostgres スキーマを移行するにはどうすればよいですか? ( SQLAlchemy が Postgres Schemasをサポートするというミラーの質問ですが、Alembic の場合)。
特に、Postgres スキーマを使用して、同じテーブル セットを共有するさまざまなクライアントを分離します。さらに、クライアント間で共有されるスキーマがあります。SQL Alchemy モデルにはスキーマの知識がなく、スキーマは実行時に を使用して設定されますsession.execute("SET search_path TO client1,shared")。
デフォルト--autogenerateは、モデルに存在しない複数のスキーマを検出し、最終的にスキーマを削除してデフォルト スキーマのすべてのテーブルを再作成するため、まったく役に立ちません。
--autogenerateただし、スキーマを正しく設定するための適切な配管を使用して、実際に使用したいと思います。Alembic の API でこれを実行できるかどうか、またはその方法について何か提案はありますか?
python - Alembic は自動生成でカスケード情報を追加しませんか?
これが私のBudgetスキーマです
とBudgetCategories
Alemb移行スクリプトを生成するとき
そして私は得る
それから私はします
そして私は得る
質問
alembic が の構文を生成しなかったのはなぜON CASCADE DELETEですか? 私は何かが足りないと思いますが、何がわかりませんか?誰かがここで助けてくれますか?
postgresql - Heroku での Alembic / Flask-migrate 移行は実行されますが、テーブルは作成されません
Flask アプリを Heroku にデプロイしようとしています。Heroku にプッシュし、ログイン ページにアクセスできますが、db を呼び出すと OperationalError が返されます。
Flask-migrate を使用すると、ローカルの移行とアップグレードを正常に実行できます。
アップグレードを使用して Heroku でアップグレードしようとheroku run python manage.py db upgradeすると、発生するように見えますが、Context impl. は現在 SQLite ですか?:
実行すると次のようになりHeroku pg:infoます。
Heroku のアップグレードに関連するログは次のとおりです。
また、私にheroku config与えます:
コンテキスト実装はどうですか。設定?ローカルで作業する場合と heroku で作業する場合のこの明らかな違いを除けば、何が起こっているのか、どのようにデバッグすればよいのかわかりません。ありがとう。
python - Alembic/Flask-migrate がデータベース構造を認識しない
私は Flask ベースのアプリケーションを使用しており、移行でデータベースの構造変更を管理できるようにしようとしています。私のデータベースは空ではなく、alembic とフラスコ移行を開始する前にテーブルとレコードが含まれています。
最初に、alembic スタンドアロンを使用しようとしました。alembic をpipインストールしてからすべてを構成し、自動生成を使用して差分を生成しました。すべて正常に動作しますが、出力は期待どおりではありませんでした:
したがって、テーブルuserは実際に私のデータベースに存在し (postgresql の予約済みテーブルだと思います)、削除したことはありません。また、alembic には見えないように見える他のテーブルがたくさんあります。最初は、alembic を適切に構成できなかったと思ったので、最初からやり直して、Miguel Grinberg による素晴らしいフラスコ拡張機能を試すことにしました。これはセットアップがはるかに簡単でしたが、結果はまったく同じメッセージでした.
私が間違っていることは何ですか?
編集:元のalembic env.pyの編集方法に関する重要な情報を追加することにしました:
この変更は、移行が開始される前に、alembic が私の宣言ベースとモデルを確認するために必要でした。スタンドアロンのアプローチをやめた後、flask-migrate チュートリアルに従い、そこにあるファイルには何も触れませんでした。
編集:わかりました。削除された「ユーザー」テーブルについて説明しました。それでも、私の他のモデルはスクリプトに表示されません。移行スクリプトが作成される前にアプリが開始され、sqlalechmy db.create_all()呼び出しがテーブルを作成するため、alembic は列とモデルに違いが見られないためだと思います。おそらく、間違った場所でcreate_all()を呼び出していますか?
編集:はい!それで、db.create_all()をmanager.run( )の下に移動したところ、変更が適切に検出されるようになりました。助けてくれてありがとう!
postgresql - alembic を使用して Heroku の Postres の文字列列のサイズを変更する
Alembic を使用して、PostgreSQL データベースの文字列列のサイズを変更したいと考えています。
私のローカル DB での最初の試みは、より単純な方法であり、ロジックのように見えました。
サイズを変更したいdb.Column フィールドのサイズを変更し、次のように型の変更を探すように alembic を構成します。そして、 を呼び出すファイルを正しく生成した実行します。compare_type=Truecontext.configure()alembic/env.pyalembic revision --autogeneratealter_column
これは問題ないようですがalembic upgrade head、alter 列が原因で実行に時間がかかりすぎたため、実行をキャンセルして他の解決策を探しました。私のコンピューターで時間がかかりすぎると、Heroku サーバーでも時間がかかると思います。この操作が完了するまで、サービスを一時停止するつもりはありません。
そこで、私のマシンで完全に機能する非常にハックなソリューションを思いつきました。
アップグレードとダウングレードの両方について、alembe ファイルに update ステートメントを作成しました。
そして、私のマシンでは本当に速く働きました。しかし、Heroku のステージング アプリにプッシュしてアップグレードを実行すると、プロンプトが表示されましERROR: permission denied for relation pg_attributeた。psql で update ステートメントを直接実行しようとすると、同じことが起こります。これは Heroku の意図的なものであり、間違った方法でデータベースを誤動作させる可能性があるため、この種のテーブルを更新することは想定されていません。Heroku でその更新を強制するのは適切ではないと思います。
また、新しい一時列を作成し、古い小さな列からその一時列にすべてのデータをコピーし、古い列を削除し、古い列と同じ名前で希望のサイズの新しい列を作成し、一時列からデータを削除し、次のように削除しました。
しかし、それには長い年月がかかり、それを行うための本当にきちんとした方法ではないようです。
私の質問は次のとおりです。変更列が実行されるのを何年も待たずに、alembic を介して Heroku の postgreSQL の文字列列のサイズを変更する正しい方法は何ですか?