問題タブ [flyway]
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.
database - データベース構造用のFlyway/Liquibaseとデータベース挿入用のDBUnit?
私のアプリケーションには次のシナリオがあります。
- 1本番サーバー
- 1テストサーバー
- n開発用コンピューター
データベースの移行では、スキーマにHibernate Schema Updateを使用し、すべての本番データ(すべてのサーバー/コンピューター)にDBUnitを入力します。スキーマの更新が完了すると、新しいスキーマの新しいDTDファイルが生成されるため、DBUnitXMLの新規インポートを実行できます。アプリケーションは、起動時にXMLファイルでデータベースを更新します(開発およびテストサーバー/コンピューターのみ!)
もちろん、このアプローチは最適で壊れやすいものではありません。そこで、LiquibaseとFlywayを見ました。どちらも優れたツールのようですが、私が得られないのは、データを移行するにはどうすればよいですか?私の場合、本番システムのデータを週に1回ダンプし、それをDBUnit XMLファイルとしてアプリケーションソース管理に追加します。これにより、すべての開発者が「新しい」データを持ち、テストサーバーも現在の本番データを持ちます。
LiquibaseとFlywayで私が目にする問題は、データベースデータから自動差分を実行し、移行の変更を自動的に生成する方法がないことです。
だから私の考えは次のステップで次のとおりです:
- 更新ではなく検証するようにHibernateを設定します。
- STRUCTURALデータベースの変更が必要な場合は、メジャーバージョンの移行スクリプトに追加します
- 移行スクリプトにはデータベースの挿入はありません。
- 新しいデータベース構造に基づいて、DBunitの新しいDTDを生成します
- 本番データベースからDBUnitXMLを生成します。
もう1つのアイデアは、flyways JavaMigrationを利用して、DBUnitに基づく初期データベースダンプを提供することです。データベースデータの他のすべての変更は、移行スクリプトで処理されます。しかし、それでも問題があります。現在の移行スクリプトの状態と本番データベースの状態との差分を作成するにはどうすればよいですか。
誰かが私のシナリオを処理する方法のヒントを私に提供できれば素晴らしいでしょう:)
postgresql - FlywayおよびPostgresメタコマンド
フライウェイでpsqlメタコマンド(http://www.postgresql.org/docs/9.1/static/app-psql.htm)を使用したいと思います。しかし、私が次のようなことをするとき
この例外が発生します:
psqlインタープリターが実行されていないと思います。あれは正しいですか?メタコマンドのようなものを使用する方法はありますか?フライウェイプレースホルダーをもっと広範囲に使用する必要がありますか?
flyway - 一度に複数のステートメントを実行する
私が見たところ、Flywayは、いくつかのステートメントを含むSQLファイルが与えられると、;を使用してそれらを1つずつ実行します。区切り文字として(これは、SqlScript.execute()から理解したものです)。このため、リモートサーバーにパッチを適用するには、ファイルの各ステートメントが個別に送信されるため、多くの時間がかかります。
ファイル全体をまとめて送信し、一度に適用することで「バッチ更新」ができるのではないかと思います。それとも、ここで苦労しているのはJDBCの制約ですか?
cdi - Flyway の CDI 拡張機能
ハイバネートが JBoss AS 7.1 に接続する前に、アプリケーションで flyway を実行しようとしました。注釈を付けてみました@javax.ejb.Startup
が、Hibernate が初期化され、データベース スキームがチェックされた後に実行されます。
私が理解している限り、Hibernate が初期化される前にフックする CDI 拡張機能を使用できます。フライウェイのすぐに使用できるサポートはありますか? そうでない場合、誰かがこれをやろうとしたことがありますか?
jar - Flywayがjarファイルで移行を見つけられない
サポートしている多くのアプリケーションに Flyway を実装しましたが、夢のように機能しました。
ただし、アプリケーションをテスト環境にデプロイするとすぐに、移行が機能しなくなりました。
調査の結果、移行がjarファイルにロードされたときにFlywayによって配置されていないことがわかりましたが、圧縮されていない場合(Eclipseで作業している場合や、jarをクラスパスに抽出した場合など)は機能します予想通り。
アプリケーションのプラグイン アーキテクチャのため、「デフォルト」設定を使用する立場にないため、Flyway オブジェクトを次のように設定しています。
jar ファイルを解凍すると、SQL ファイルは za/co/company/application/db/migration に配置されます。
前述のように、移行が機能することはわかっていますが、jar ファイルにあるときだけではありません。上記のコードは完全に実行されます。移行の一部として実行される sql ファイルが見つからないだけです。
もともと flyway-core-1.6 を使用して開発されましたが、1.6.1 と 1.7_SNAPSHOT リリースで (同じ否定的な結果で) 試しましたが、こことここで同様の問題が報告されました。
編集:追加情報
OS: Windows XP
JDK: 1.7.0_04
DB: SQL Server 2005
バット ファイルを介してコマンド ウィンドウから直接実行。
デフォルトのプレフィックス (V) とサフィックス (.sql) を使用していることを確認しました。また、ログで除外されていると記載されている移行ファイルの名前は、実際に実行したい移行です。
編集:さらに詳しい情報。 ソース リポジトリのクローンを作成し、リソースが除外されたとしてログに記録される直前にスタック トレースを取得しました。
移行が除外されるのは、jar ファイルで移行が見つかったときだけであることを確認しました。.sql 移行が jar ファイル内にある場合はスキャンさえされないかのようです。
私はまだ探し回っていて、それに応じて更新します。
編集: ソース コード クエリ: 私は Flyway のソース コードにあまり慣れていませんが、数時間しか調べていません...
SqlMigrationResolver クラスの resolveMigrations メソッドにあるこのコードは何をするものですか? コードからそれを削除すると、SQLmigrations は Jar ファイルから完全にロードされますが、そうでない場合はロードされず、警告がログに記録されます。
maven-3 - フライウェイを無効にする方法: プロファイルの目標をクリアする
flyway maven プラグインを使用してデータベースを移行しています:
3 つの環境 (dev、pre、pro) とそれぞれのプロファイルがあります。すべての環境は独自のプロパティを設定するため、フライウェイ設定の具体的なプロファイルを使用して、必要なものを DB に移行できます。
Flyway にはクリーンな目標があります。この目標により、スキーマ自体を削除することなく、スキーマ内のすべてのオブジェクトを削除できます。
プロファイルの 1 つだけでこの目標を無効にする方法はありますか? (明らかに生産中:P)
java - Flyway1.5およびjBoss7のmigrate()は0を返し、SQLの移行は適用されません
Flyway1.5をjboss7で動作させようとしていますが、migrate()を呼び出すと、ゼロが返され、ディレクトリからの移行は実行されません。baseDirはdb/migrationを返し、PROJECT_ROOT / src / main / resources / db/migrationの下に移行があります。移行ファイル名はV1__Test.sqlです。baseDirを明示的に設定してみたことと、schema_versionテーブルにバージョン0が含まれていること(flyway.init()で設定)についても言及する必要があります。
また、Flyway 1.6および1.6.1でこれを試しましたが、いくつかの既知の1.6の問題で見たように、VFSプロトコルの例外が発生していました。
助言がありますか?
よろしく、ジム
java - JBoss7でFlywayを実行するとエラーが発生します
アプリケーションをセットアップしようとしています。これにより、データベースが任意の環境にデプロイされたときにデータベースが自動的にアップグレードされるため、Spring構成に以下を追加しました。
しかし、JBoss 7で実行すると、次のエラーが発生します。
com.googlecode.flyway.core.validation.ValidationException: Found non-empty schema 'WMYERS' without metadata table! Use init() first to initialize the metadata table.
私はすでにデータベースに対してflywayclean-migrateを実行しているので、データベースはすでにセットアップされて準備ができており、SCHEMA_HISTORYテーブルが存在します。何かアイデアはありますか?
database - フライウェイの移行はPostgreSQLのCOPYをサポートしていますか?
既存のposgresqlスキーマのpg_dumpを実行した後、コピーを使用して多数のテーブルポピュレーションステートメントを含むSQLファイルがあります。
標準ではありませんが、これはPostgreSQLのPLSQL実装の一部です。
(Mavenプラグインを介して)フライウェイの移行を実行すると、次のようになります。
私は何か間違ったことをしていますか、それともこれはサポートされていませんか?
ありがとう。
java - Flywayを使用したMySQLJDBCドライバー
私の〜/ .bashrcで:
CLASSPATH変数は正しいです:
それを実行しようとしています:
これのドライバーが見つからない理由はありますか?
ありがとう!