問題タブ [dbdeploy]
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.
mysql - SQL Server で dbdeploy を使用する方法は?
SQL Server データベースと MySQL Server の dbdeploy の設定についてサポートが必要です。
dbdeploy Web サイトの例では、SQL Server と MySQL のドライバーを設定する方法がわかりません。少し迷っています。
サンプル スクリプトを歓迎します。
ありがとう
php - Phingのdbdeployタスクを取得してデルタエラーで自動的にロールバックする
Phingのdbdeployタスクを使用してデータベーススキーマを管理しています。デルタファイルのクエリにエラーがない限り、これは正常に機能しています。
ただし、エラーが発生した場合、dbdeployはエラーのあるクエリまでデルタファイルを実行してから中止します。次に、変更ログテーブルのエントリを手動でロールバックする必要があるため、これはフラストレーションを引き起こします。そうしないと、dbdeployはその後の試行で移行が成功したと見なすため、再試行しても何も起こりません。
したがって、問題は、dbdeploy使用トランザクションを取得する方法はありますか、またはエラーが発生したときにphingを自動的にロールバックする他の方法を提案できますか?
注:私はPhingにそれほど精通していないため、カスタムタスクの作成が含まれる場合は、サンプルコードまたは詳細情報を含むURLを高く評価します。ありがとう
sql-server - SQL Server 2000 - 接続レベル設定の以前の状態を復元する方法
T-SQL コードベースの変更管理に DBDeploy.NET を使用しています。DBDeploy は、開発者が変更スクリプトの番号付きセットを維持することによって機能します。デプロイが (NAnt 経由で) トリガーされると、DBDeploy は変更ログ テーブルを調べて、インスタンスを最新の状態にするために実行する必要があるパッチを判断します。
私が抱えている問題は、インデックス付きビューを作成するために必要な設定を行うことです。QUOTED_IDENTIFIER、ANSI_NULLS、および ARITHABORT はすべてオンにする必要があります。はい、インデックス付きビューを作成/変更する変更スクリプトの先頭に、これらの SET ステートメントを簡単に配置できます。ただし、これらの設定は接続レベルです。後で新しいインスタンスをゼロから構築する場合はどうなりますか? 新しいインスタンスで DBDeploy を実行すると、すべての変更スクリプトが単一の接続で実行される最終的な SQL スクリプトに効果的に連結されるため、これらの設定は後続のすべての変更スクリプトに影響を与えます。さらに悪いのは、QUOTED_IDENTIFIER のような解析時オプションです。これは、以前のすべての変更スクリプトにも適用されます。そう:
- SQL Server 2000 を使用しています。接続レベルの設定の解釈は正しいですか? つまり、GO を使用してスクリプトをバッチに分割しても、これらの SET オプションの範囲は制限されません。接続レベルの設定がバッチレベルの名前に変更された後のバージョンはどうですか?
- SETを解除する方法はありますか? 私が理解しているように、接続レベルの設定は 3 値です。つまり、ON、OFF、およびデフォルトです。デフォルトは、SQL ステートメントの内容、インスタンス設定、データベース設定、および永続化されたユーザー設定に基づいて解釈されます。何かを ON に設定すると、それを OFF に設定するだけで元に戻すことはできません。これは、それが以前の設定であった場合、デフォルトがマスクされるためです。
- 設定する前に接続レベルの設定の状態を保存して、後で手動で復元できるようにする方法はありますか?
代替手段は最悪です:
- SS2K では 4000/8000 文字の制限があるため、インデックス付きビューの各 create/alter ステートメントを動的 SQL でラップできます。これにより、SET ステートメントの範囲がかなり制限されます。
- プロジェクト レベルで使用される SET オプションを修正し、すべての開発者にそれらの SET オプションを各変更スクリプトの先頭に配置して強制するように要求するポリシーを制定できます。適用されます。
- 変更スクリプトごとに常に新しい接続を使用するように DBDeploy 自体にパッチを適用できますが、変更スクリプトの取り消しを処理する方法を再設計する必要があります。
では、何ができるでしょうか。
java - Gradle で Hibernate を ORM として DBDeploy を使用する
ORM として Hibernate を使用し、ビルド システムとして Gradle を使用する Java プロジェクトで、DBdeploy のようなバージョン管理されたデータベース移行ツールを使用しようとしています。Gradle での DBDeploy の実行に関するドキュメントを参照できません。また、Hibernate クラス/定義の変更を調べることでスキーマの変更を理解できる Hibernate ベースの移行マネージャーはありますか?
database - dbdeployを使用してデータベースをデプロイする際のデータの制御
Phingのdbdeployタスクを使用して、PostgreSQLデータベースのバージョン管理を行います。これは全体として優れた作業方法です。データベースのバージョンを使い始めてからは、データベースに含まれるデータをどのように制御するのかという疑問を除けば、それほど問題はありません。
現在、私は通常、テストに使用されるいくつかのサンプルデータを含むデルタを持っていますが、実稼働環境では、実際の有効なデータのように実稼働データが必要です。もちろん、テストデータを切り捨てて実際のデータを挿入する別のデルタを作成することもできますが、デルタ内の唯一の言語はSQLであるため、どういうわけかそれは不格好で扱いにくいと感じます。このようなデルタを作成する場合、シーケンスを処理し、外部キーの関係が正しいことを確認するのは非常に困難です。
そのため、たとえばCSVファイルからデータをインポートするPHPスクリプトを作成するのが理にかなっていると思いました。これは、列の名前を変更する別のデータベース変更が行われるまでは実際に機能し、PHPファイルが使用できなくなります。もちろん、これは、データベースの変更を組み込むようにスクリプトを更新し、スクリプトを再実行することで簡単に修正できますが、エラーが発生しやすいため、最初にdbdeployを使用し始めました。
だから、私の質問は; 変更をデプロイする際にデータをどのように処理しますか、より正確には、本番環境に必要なデータをどのように挿入しますか?
database - すべてのプロジェクト モジュールで Maven プラグインを実行しないようにする方法
アプリのビルドに使用される Maven 3、EJB、WAR、および EAR モジュールを使用するマルチモジュール Web アプリがあります。アプリに dbDeploy を追加したいので、プラグインと正しいディレクトリと依存関係を最上位の pom ファイル (ear、ejb、war プロジェクト ディレクトリのあるディレクトリ) に追加しようとしました。しかし、最上位ディレクトリで dbdeploy:update を実行しようとすると、現在のディレクトリで正しく実行されますが、失敗したプロジェクトの各モジュールで再度実行しようとします。
私の質問は、各モジュールでプラグインを実行せず、最上位の pom 内でのみ実行するように maven に指示する方法はありますか? 私も見ましたが、dbdeploy が設定の一部としてスキップ パラメータをサポートしているようには見えません。
ありがとう!
continuous-integration - Rake での DBDeploy.Net の使用
.Net プロジェクトで SQL スクリプトを管理するために DBDeploy.Net を使用しようとしています。自動ビルドには Rake スクリプトも使用します。Rake で DBDeploy.Net を使用する方法に関するドキュメントが見つかりません。DBDeploy を Rake で動作させる良い方法はありますか? (DBDeploy 用の NAnt スクリプトを作成して Rake から呼び出したくありません)
maven - Dbdeploy maven プラグインが changelog テーブルを見つけられない
dbdeploy maven プラグインを使用していますが、ビルドを実行するとエラーが発生します。エラーは言う:
これは、dbdeploy が使用する CHANGELOG テーブルが作成されていないためです。サンプルに付属のantビルドスクリプトを使用してそれがどのように行われるかを見ることができますが、mavenプラグインでそれを行う方法がわかりません(mavenの下でantタスクを実行したくありません。 dbdeploy-maven-plugin のポイント)。
何か案は?
gradle - delta_set にデフォルト値がないため、dbdeploy で SchemaVersionTrackingException を解決するにはどうすればよいですか?
自動DB移行をしようとしています。同じためにdbdeployを使用しています。このリンクの手順に従いましたhttp://blog.codeborne.com/2012/09/using-dbdeploy-in-gradle.html
変更ログ テーブルを次のように作成しました。
build.gradle の updateDatabase タスクは次のとおりです。
gradle updateDatabase を実行すると、com.dbdeploy.exceptions.SchemaVersionTrackingException: Could not update change log because: フィールド 'delta_set' にデフォルト値がありません。
次のように、変更テーブル ログ ファイルのデフォルト値として「main」を割り当ててみました。
しかし、私はまだ同じ例外を受け取りました。
delta_set 属性も削除しましたが、同じ例外が発生しました。これは本当に私を混乱させました。
私はデータ移行にまったく慣れていません。そのため、このエラーとその対処方法に関するヘルプをいただければ幸いです。
前もって感謝します。
tsql - SQL Server DB の変更の展開
私は、DB の変更に遅れずについていくのに苦労しています。また、Dev から PRD への DB の変更をあるリリースから別のリリースにクリーンに維持および展開する方法についても苦労しています。
現在、SQL スクリプトを使用して、前回のリリース以降の変更点を把握しています。
- プロシージャとビューは、存在する場合は簡単に削除して再作成できるため、簡単に進めることができます。
- 既存のテーブルは単純に削除できないため、テーブルの変更はより困難です。
しかし、私が理解できない主な問題は、2 つの主要な PRD リリースの間に Dev と UAT への複数のミニ リリースがあることだと思います。
Dev および UAT ミニ リリースは、他の開発者から変更のリストを取得し、それを自分のものと組み合わせてリリースを行う限り問題ありません。さらに、Dev および UAT DB のシステム管理者であるため、そこに何があるかを正確に把握し、変更を適用するとどうなりますか。
PRD の場合、きれいなスクリプトを作成して DBA に渡して、DBA で実行できるようにする必要がありますが、PRD のテーブル名、列、およびデータ以外は何も表示できません。
PRD 用のこのスクリプトは、ミニ リリースに移行したほとんどすべてをキャプチャする必要がありますが、ほとんどの場合、これらのミニ リリースは連続したものではなく、機能 A を追加し、その後のリリースで機能 A を削除するなど、互いに否定することもありますが、PRD の場合は、機能 A を追加する必要があるかもしれないので、機能 A を効果的に削除する 2 番目のミニ リリースを作成する必要はありません。
要するに、リリース間の DB の変更を管理および追跡する方法と、DB の変更のための展開スクリプトを作成する良い方法を検討しています。
注: すべての SQL オブジェクトのコピーを TFS に手動で保持しています。
私はデータベース プロジェクトを使用してみましたが、私が望んでいたことを成し遂げることができませんでした。
アイデアはありますか?どんな助けでも大歓迎です