Bitnami Redmine 3.4 から 4.0 へデータを移行した結果のDB構造を確認する。

##■データ移行後のDB構造を確認
@8amjpさんの記事より、Bitnami Redmine3.4から4.0へのデータ移行は出来たのですが、
　移行後のDB構造がどのように変化しているかの情報が必要であったため下記の記事を参考にして同じ操作した後に、データを比較します。
　https://qiita.com/8amjp/items/784a664aa3eac05ab03a

■環境：
 ・Redmine4系
　　bitnami-redmine-4.2.1-1-windows-x64-installer.exe
　　4.2.1.stable
　・Redmine3.4系
　　bitnami-redmine-3.4.6-5-windows-installer.exe
　  3.4.6.stable
　　※入手先
　ダウンロード直リンク: https://downloads.bitnami.com/files/stacks/redmine/3.4.6-5/bitnami-redmine-3.4.6-5-windows-installer.exe

##■Redmine4系のデータベースをバックアップ
  C:\Bitnami\redmine-4.2.1-1>mysqldump --single-transaction -u root -p bitnami_redmine > bitnami_redmine_4_default.dump

##■旧Redmine3.4系のデータベースをバックアップ
  C:\Bitnami\redmine-3.4.6-5>mysqldump -u root -p bitnami_redmine > dump34.sql
　※検証用にユーザー、プロジェクト、チケットの情報を作成

##■初期データの削除
　以下のファイル（truncate.sql）を作成し、テーブルの初期化処理を記載して実行する。
　truncate.sql
　　TRUNCATE TABLE `email_addresses`;
　　TRUNCATE TABLE `enumerations`;
　　TRUNCATE TABLE `issue_statuses`;
　　TRUNCATE TABLE `roles`;
　　TRUNCATE TABLE `schema_migrations`;
　　TRUNCATE TABLE `trackers`;
　　TRUNCATE TABLE `users`;
　　TRUNCATE TABLE `workflows`;

C:\Bitnami\redmine-4.2.1-1>mysql -u root -p bitnami_redmine < truncate.sql

##■初期データの修正
　旧Redmine3.4系からデータをバックアップしたデータ（dump34.sql）の先頭に以下1行を記載
　SET SESSION TIME_ZONE = '+09:00';

##■データ移行
　以下コマンドでデータ移行
　C:\Bitnami\redmine-4.2.1-1>mysql -u root -p -f bitnami_redmine < redmine_3.sql

##■マイグレーション
　場所を変えて以下コマンドを実行
　C:\Bitnami\redmine-4.2.1-1>cd C:\Bitnami\redmine-4.2.1-1\apps\redmine\htdocs
　C:\Bitnami\redmine-4.2.1-1\apps\redmine\htdocs>bundle exec rake db:migrate

　※以下のような表示がでる。（エラーが出なければ問題なし）
== 20170723112801 RenameCommentsToContent: migrating ==========================
-- rename_column(:comments, :comments, :content)
   -> 0.0187s
== 20170723112801 RenameCommentsToContent: migrated (0.0189s) =================

== 20180501132547 AddAuthorIdToTimeEntries: migrating =========================
-- add_column(:time_entries, :author_id, :integer, {:default=>nil, :after=>:project_id})
   -> 0.1193s
== 20180501132547 AddAuthorIdToTimeEntries: migrated (0.1289s) ================

== 20180913072918 AddVerifyPeerToAuthSources: migrating =======================
-- change_table(:auth_sources)
   -> 0.0304s
== 20180913072918 AddVerifyPeerToAuthSources: migrated (0.0312s) ==============

== 20180923082945 ChangeSqliteBooleansTo0And1: migrating ======================
== 20180923082945 ChangeSqliteBooleansTo0And1: migrated (0.0000s) =============

== 20180923091603 ChangeSqliteBooleansDefault: migrating ======================
== 20180923091603 ChangeSqliteBooleansDefault: migrated (0.0000s) =============

== 20190315094151 ChangeCustomValuesValueLimit: migrating =====================
-- change_column(:custom_values, :value, :text, {:limit=>16777216})
   -> 0.0630s
== 20190315094151 ChangeCustomValuesValueLimit: migrated (0.0638s) ============

== 20190315102101 AddTrackersDescription: migrating ===========================
-- add_column(:trackers, :description, :string, {:after=>:name})
   -> 0.0458s
== 20190315102101 AddTrackersDescription: migrated (0.0466s) ==================

== 20190510070108 AddUniqueIdToImportItems: migrating =========================
-- change_table(:import_items)
   -> 0.0298s
== 20190510070108 AddUniqueIdToImportItems: migrated (0.0305s) ================

== 20190620135549 ChangeRolesNameLimit: migrating =============================
-- change_column(:roles, :name, :string, {:limit=>255, :default=>""})
   -> 0.0584s
== 20190620135549 ChangeRolesNameLimit: migrated (0.0592s) ====================

== 20200826153401 AddTwofaSchemeToUser: migrating =============================
-- add_column(:users, :twofa_scheme, :string)
   -> 0.0172s
== 20200826153401 AddTwofaSchemeToUser: migrated (0.0178s) ====================

== 20200826153402 AddTotpToUser: migrating ====================================
-- add_column(:users, :twofa_totp_key, :string)
   -> 0.0153s
-- add_column(:users, :twofa_totp_last_used_at, :integer)
   -> 0.0159s
== 20200826153402 AddTotpToUser: migrated (0.0326s) ===========================

##■再起動して動作確認
　普通はここで終了
 ※旧Redmine3.4系のプロジェクトやチケットが見えているか確認する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651745/0f8448a8-df09-fb15-2904-2b6d185d0bf0.png)

##■データ移行後の検証
　マイグレーション後にバックアップ
　C:\Bitnami\redmine-4.2.1-1>mysqldump -u root -p bitnami_redmine > dump42.sql

##■データ比較（旧Redmine3.4系のバックアップと、データ移行後のバックアップを比較）
①先頭行から比較
　移行後のデータでデーブルが追加されている事が分かる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651745/e6f648a0-833d-d06a-683f-233e23a038be.png)

②usersテーブルを見ると、追加されたレコードがある。また属性も変わっている。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651745/d878a7eb-3189-3520-b00c-722b47076348.png)

③`tokens`テーブル他
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651745/7aafa3f3-bffb-bddb-3a47-593a07e0bde9.png)![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651745/37589019-bb2f-414d-bdc8-0a65b1eefbe9.png)

④`projects`テーブル
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651745/79edffbf-7c18-07ed-2ab4-541031094d06.png)

④`issues`テーブル
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651745/c56da020-ab48-fa14-2f5d-d62eef2284ac.png)

##■データ比較（データ移行後バックアップと、Redmine4系のバックアップを比較）
①先頭行から比較
　変化なし
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651745/e1496c9b-6153-c17d-e666-2e27b166c8ce.png)

②usersテーブルを見ると、属性に差異がある。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651745/004f2a63-4c5a-9be3-f2c6-5ba4a55ec1a6.png)

③`tokens`テーブル他
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651745/84dccc37-3216-575c-fe43-ba88a15fff10.png)

④`projects`テーブル
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651745/f7688de9-74a4-496e-ca80-3b54ee9bed3e.png)

④`issues`テーブル
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/651745/fed83ec8-9225-7dae-bab0-f64c6a484a84.png)

■結果分かった事
　データ移行をすると、マイグレーションで足りないデータは追加（削除は未確認）されるが、
　データの型全てが修正される訳ではなかった。
　※型自体は旧Redmine3.4系変換されるも、Redmine4系データベースとも不一致となっている個所もあった。
　　理由は分からないが自動変換されるものとされないものがある事は確認できた。

■ファイル
・Redmine4系のデータベースのバックアップ
https://github.com/katsunori-tanaka/awesome/blob/master/bitnami_redmine_4_default.dump

・旧Redmine3.4系のデータベースをバックアップ
https://github.com/katsunori-tanaka/awesome/blob/master/dump34.sql

・データ移行後のバックアップ
https://github.com/katsunori-tanaka/awesome/blob/master/dump42.sql