きり丸の技術日記

技術検証したり、資格等をここに残していきます。

DB

SQL*Loaderを使ったらアプリ実行時にORA-00001, ORA-01502が発生した

当たり前といえば当たり前の話ですが、知らなかったのでブログに残します。 環境 Oracle Database 11g Docker環境で使用していました 事象 Oracle DatabaseにはSQL*Loaderという標準でついていて、高速でCSV等の外部ファイルからDatabaseにImportできるCLIが…

エンティティを渡すだけでDBのユニットテストのセットアップしたい(SimpleJdbcInsertとBeanPropertySqlParameterSource)

皆さんはDBのユニットテストを行うとき、どのようにテストのセットアップを行っていますか。 私はSimpleJdbcInsertを使用しています。テーブル名とInsert対象のカラムと値のマップを渡すだけで更新してくれるので、個人的には使いやすいと思っています。 し…

Oracle19cのイメージをローカルでDockerビルドする

OracleのDatabaseで開発することになりました。サクっと環境構築したかったので、Dockerでローカル環境を構築しようとしましたが、Docker Hubにはイメージが提供されていません。ですので、自分でOracleDatabaseのイメージをビルドする必要があります。 今回…

SpringBootで特定の環境のみFlywayが動かないようにする

既存のシステムが利用しているDBに相乗りしてアプリケーションを作ることがあります。 ユニットテストのためにDBマイグレーションできるFlywayは使いたいが、相乗りする本番環境DBは管理していないので余計なことはしたくない。 今回の記事では、SpringBoot…

FlywayとSpringで検証環境と本番環境で投入するデータを変更する

仕事ではDBマイグレーションとしてFlywayを使用しています。ただ、表やテーブル等のDDLのみで、マスタデータ等のDMLは手動で管理していました。ですので、FlywayでDMLも管理することにしました。 しかし、そのまま適応してしまうと検証環境と本番環境のデー…

Flyway+Springでデフォルトの接続スキーマを設定ファイルで指定する

複数のスキーマがあるDBに対して、Flyway+Springでアクセスしようとしたときに半日くらい設定に苦労したので、メモとして残しておきます。 環境 Flyway 5.2.4 PostgreSQL 13 SpringBoot 2.3.5.RELEASE Java Java 11 YAML 設定方法 spring: datasource: drive…

動いているDBからテーブルやER図をDockerで生成する(Schema Spy)

テーブル定義やER図は自動生成できると楽です。また、本番環境のDBから生成できるともっと便利です。 テーブル定義やER図を自動生成するツールはたくさんありますが、現在のプロジェクトで使用しているSchema Spyを紹介します。GitHubのStar数が1600もあるの…

データベースのH2を使用してMyBatisの取得・更新のテストを行う(JavaとSpringBoot)

きり丸アドベントカレンダー2020の9記事目です。 今回の記事でMyBatisのテストを行えるようにします。テスト用のスターターが準備されているので、テストのための準備は簡単です。ただし、テストのセットアップは慣れていないと、時間がかかってしまいます。…

MyBatisを使用してデータの取得・更新をする(JavaとSpringBoot)

きり丸アドベントカレンダー2020の8記事目です。 今回の記事でDBの更新を行います。データの取得(Select)と追加(Insert)をこの記事で紹介します。 更新と削除に関しても同様の処理で問題ありませんので、頑張ってみてください。なお、9日目にDBのテスト…

GitpodでDBのDockerを使用し、SpringBootからアクセスする

きり丸アドベントカレンダー2020の4記事目です。 Gitpod上でDBの環境構築もできると、確認できることが増えます。DBも設定しましょう。 手順 .gitpod.Dockerfileを修正 gp initで作成したDockerのイメージにはPostgreSQLは含まれていません。ですので、.gitp…

Java + Flywayで誤って適用してしまったバージョンを未適用の状態にする

以前、Flywayで参照制約を追加したが、既存のデータが既に参照制約違反だったため、四苦八苦した話を書きました。 ※以前の記事。 nainaistar.hatenablog.com その後、色々知った後に検証をしていると、いろいろと勘違いしていることが分かったので、忘れない…

【DB】制約(constraint)にはちゃんと名前を付けること

当たり前のことを書きます。 結論 制約はDBが付与するデフォルト名ではなく、しっかり名前を付けましょう。 デフォルト名ではない場合何が起きたのか 環境 Java DB H2(ユニットテスト) PostgreSQL(結合テスト・本番環境) DBマイグレーション flyway 何が…