問題タブ [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.
mysql - FlywayMySQL構文エラー
1ヶ月から問題なくFlywayを使用しています。
しかし、今日、私は非常に長い(1500行を超える)新しい移行スクリプトを追加しようとしましたが、奇妙なMySQL構文エラーが発生しました。
このスクリプトをMySQLWorkbenchで開きましたが、報告されている構文エラーはなく、スクリプトはエラーなしで実行されました。
'V10012__insert-acceptance-testing-event-moment-passed.sql'という名前のこのスクリプトには、次の手順が含まれています。
- INSERTステートメント1
- INSERTステートメント2
- ..。
- INSERTステートメントLAST-1
- INSERTステートメントLAST
MySQLによって報告されたエラーは次のとおりです。
[エラー]com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorExceptionが原因:SQL構文にエラーがあります。MySQLサーバーのバージョンに対応するマニュアルで、232行目の[ERROR]com.googlecode.flyway.coreの'INSERT INTO video_feedback(id、youtube_video_id)VALUES(1102、/ * id*/'の近くで使用する正しい構文を確認してください。 migration.MigrationException:バージョン10012への移行に失敗しました!バックアップを復元し、データベースとコードをロールバックしてください!
エラーは「INSERTステートメントLAST」ステートメントで報告されます。
しかし、スクリプトで「INSERTステートメントLAST」と「INSERTステートメントLAST-1」を反転すると、エラーは「INSERTステートメントLAST-1」(現在はファイルの最後にあります)で報告されます。したがって、Flywayが正常に実行したため、「INSERTステートメントLAST」にエラーはありません。
また、スクリプト「V10012_insert -acceptance-testing-event-moment-passed.sql」から「INSERTステートメントLAST」ステートメントを完全に削除し、このステートメントを「V10013_test.sql」という名前の新しいファイルに入れると、フライウェイが実行されます。すべての移行スクリプトが正常に実行されました。
それで、私の最初の「V10012__insert-acceptance-testing-event-moment-passed.sql」スクリプトの問題は何でしょうか?
スクリプトサイズの制限はありますか?
これが私の環境に関する有用な情報です:
- 私のスクリプトはたくさんの/**/コメントを使用しています
- FlywayMavenプラグイン1.7
- Maven 2.0.3
- mysql:mysql-connector-java:5.1.21
- MySQL 5.5.X
- Java JDK 1.7.0_09-b05
- Windows 7
java - Flyway : Flyway 1.6 および 1.7 で Oracle データベースの移行が機能しない
手がかりをいただければ幸いです。
init() でテーブルschema-versionが作成された後、migrate() メソッドを呼び出すと、次の例外が発生します (SQL および Java の移行のいずれか)。
com.googlecode.flyway.core.exception.FlywayException: com.googlecode.flyway.core.metadatatable.MetaDataTable.lock(MetaDataTable.java:146) でスキーマ 'XXX' のメタデータ テーブル 'schema_version' をロックできません
...
原因: java.sql.SQLException: SQL 文字列は oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1263) の DML ステートメントではありません oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3584) oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3665) で oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1352) で com.googlecode.flyway.core.util.jdbc.JdbcTemplate.update (JdbcTemplate.java:260) com.googlecode.flyway.core.dbsupport.oracle.OracleDbSupport.lockTable(OracleDbSupport.java:76) com.googlecode.flyway.core.metadatatable.MetaDataTable.lock(MetaDataTable.java:144) ) ... 61 以上
ありがとう。
database - 個々のユーザー アカウントを使用して Flyway 移行を実行する
SQL スクリプトを flyway 移行に移行する取り組みの一環として、Oracle sqlplusCONNECT
ステートメントを多用するスクリプトをいくつか見つけました。それらを削除して、必要な権限を持つユーザー (例: SYSTEM
) を使用することは、残念ながらオプションではありません。
異なるアカウントを使用して個々の移行を実行するエレガントな方法があるかどうか疑問に思っていますか? これがサポートされている場合、スクリプトをCONNECT
ステートメントごとに分割すると、問題の洗練された解決策につながる可能性があります。
別のアカウントを必要とするデータベースの移行を他の人はどのように処理していますか?
grails - Groovy 移行と条件付き環境固有のデータ挿入に対する Flyway のサポート
私たちは Grails プロジェクトに取り組んでおり、Flyway を db 移行ツールとして検討しています。
私たちの現在のアーキテクチャでは、条件付きの環境固有のデータ挿入 (同じテーブル内の「other-data」に対して本番用の「tableA」内の「some-data」など) について、(アプリケーションの起動時に実行される) Groovy 移行スクリプトに依存しています。本番前の tableA')。
Q1. Flyway は Groovy 移行スクリプトをサポートしていますか?
Q2. そうでない場合、条件付きの環境固有のデータ挿入を実現するにはどうすればよいでしょうか?
mysql - Flyway は MySQL で「alter table ... modify `col` auto_increment」を実行しますが、`col` の値は変更しません
これらの文をMySQLのコマンドラインやWorkbenchから実行すると...
...得られるのは、id
1 から N までの自動インクリメント値で埋められた新しい列です。
しかし、flywayid
から実行すると、最後の文がその値を変更しないため、列のすべての行にゼロがあります。
なぜなのかご存知ですか?
手順を使用してこれらの値を挿入する以外の解決策/回避策はありますか?
ありがとうございました!
フェラン
flyway - flywayのパーサーだけ使えますか
Flyway のパーサーのみを使用して SQL スクリプトを解析し、JDBC で実行したいと考えています。現在、私は仕事をする簡単なパーサーを自分で作りました。ただし、これまでに出会ったケースに限ります。より洗練されていると思うので、フライウェイパーサーを使用したいと思います。これを達成するためにいくつかのフライウェイクラスを使用する方法はありますか?
mysql - Flyway 移行スクリプトなどの 16 進数 (ブロブ) コンテンツを含む SQL 挿入を生成する方法
Flyway 移行スクリプトなどの 16 進 (blob) コンテンツを含む SQL 挿入を生成するにはどうすればよいですか。
16 進モードを使用する UltraEdit などのエディタでバイナリ コンテンツを開くことができます。ただし、このコンテンツを SQL エディタ (MySQL Workbench など) にコピー アンド ペーストする方法が見つかりません。数バイトをコピーできますが、必要なファイルは約 60k から 100k です。
提案は誰にお願いしますか?
mysql - コンソールまたはログへの移行の詳細出力
私は周りを見回しましたが、これに対する答えを見つけることができないようです。
当社の DBA は、フライウェイによって呼び出された SQL 移行の出力を確認したいと考えています。
たとえばmysqlでは:
出力は次のとおりです。
オラクルでは:
出力は次のようになります。
誰かがこの問題を解決できましたか、または誰かが私を正しい方向に向けることができますか?
あなたが持っているかもしれないアイデアに感謝します。
java - Flyway - SQL リソースをコピーしない
Java Web プロジェクトで flyway を使用しています。
移行は src/main/resources/db/migration に配置されます
ここで、ターゲット war から sql リソースを除外したいので、pom.xml に追加します。
しかし、ターゲットからの移行をグラブするため、フライウェイは機能しません。
では、どうすればフライウェイを使用できますが、sql を自分の戦争にコピーするのを避けることができますか?
java - Antを使用している場合、FlywayはクラスパスでSpringJavaの移行を見つけることができません
プロジェクトにFlywayを次のディレクトリレイアウトで設定しました(無関係なディレクトリを除く)。
そして、build.xmlの関連部分(flyway.urlとflyway.driverは、ここに含まれていないプロパティファイルに設定されています--- Flywayはデータベースとの通信に問題はありません):
コンパイルターゲットで作成された移行JARのレイアウトは次のとおりです。
そしてここにからの出力がありますflyway:info
:
Flywayは.classファイルを検出していません。私はここで何が間違っているのですか?
編集: Ant(Maven、Ivyなし)でセットアップされたFlywayの実用的な例を誰かが知っているなら、それは大いにありがたいです。
アップデート
FlywayはJdbcMigration
クラスを検索しますが、検索しませんSpringJdbcMigration
。
この移行は正常に読み込まれます。
しかし、これはスキップされます:
SpringJdbcMigration
:を使用した場合のAntデバッグ出力は次のとおりです。