MySQL の Kingbase への移行全体プロセス調整ソリューション (Renda Jincang) (Java)

序文:

プロジェクトのローカリゼーション要件に従って、MySQL データベースを kingbase データベースに移行する必要があり、バックエンド サービスは Java です。

次に、ローカルの kingbase-win バージョン サーバーを使用してプロセスとコードをテストします。

目次

序文:

プロセス:

1.公式Webサイトからファイルをダウンロードする

1. インストールパッケージをダウンロードする

 2. 必要な認証ファイルをダウンロードします。

 3. データベース接続ドライバー ファイルをダウンロード編集

 2. インストール

 編集

3. データベースの移行

 1. データベース開発管理ツール ソフトウェアを開き、ターゲット データベースに接続し、移行用のターゲット データベースを作成します。

 2. データ移行ツール ソフトウェアを開き、ブラウザで http://localhost:8080 を開きます。

3. ソースデータベースとターゲットデータベースを作成する

4. 移行タスクを作成する 

 4. コードを部分的に変更してテストする

1. ドライバー ファイルを構成ファイルに追加します。

2. 成功後にプロジェクトを開始し、関連するすべての機能をテストします。

ピット修正ポイントを踏む:

Q1: エラー; SQL 文法が間違っています []; ネストされた例外は com.kingbase8.util.KSQLException: エラー: リレーション「テーブル名」が存在しません

Q1: tk.mybatis を使用して SQL を記述し、エンティティ クラスの ID に @GeneratedValue アノテーションが使用されている場合、爆発して NPC Jincang () に空ではない例外が表示されます。


プロセス:

1.公式Webサイトからファイルをダウンロードする

Renda Jincang - データベース製品とサービスの世界有数のプロバイダーになること (kingbase.com.cn)

1. インストールパッケージをダウンロードする

 2. 必要な認証ファイルをダウンロードします。

 3. データベース接続ドライバー ファイルをダウンロードします。

 2. インストール

 

ダウンロードしたライセンス ファイルを選択します

 

インストールが完了すると、3つのソフトウェアが表示されます

 

3. データベースの移行

 1. データベース開発管理ツール ソフトウェアを開き、ターゲット データベースに接続し、移行用のターゲット データベースを作成します。

 2. データ移行ツール ソフトウェアを開き、ブラウザでhttp://localhost:8080を開きます。

 

3. ソースデータベースとターゲットデータベースを作成する

4. 移行タスクを作成する 

 個人のニーズに応じて設定し、通常は直接保存して移行します

 

 ページ移行結果から移行結果の詳細を確認できます。

 4. コードを部分的に変更してテストする

1. ドライバー ファイルを構成ファイルに追加します。

手順 1 でダウンロードしたドライバー パッケージをドライブスルーします。

 Maven コマンド ラインを開き、次のコマンドを入力します。ここで、ドライバー パッケージのアドレスとバージョンはそのまま置き換えられます。

mvn install:install-file -Dfile=D:\kingbase8-8.6.0.jar -DgroupId=com.kingbase8 -DartifactId=kingbase8 -Dversion=8.6.0 -Dpackaging=jar

インポートが成功したら、pom ファイルに移動して追加し、mysql に関連する依存関係をコメント アウトします。mysql に関連する設定をグローバルに検索して置換するのが最善です。

    <dependencies>
        <dependency>
            <groupId>com.kingbase8</groupId>
            <artifactId>kingbase8</artifactId>
            <version>8.6.0</version>
        </dependency>
    </dependencies>

2. 成功後にプロジェクトを開始し、関連するすべての機能をテストします。

ピット修正ポイントを踏む:

Q1: エラー; SQL 文法が間違っています []; ネストされた例外は com.kingbase8.util.KSQLException: エラー: リレーション「テーブル名」が存在しません

D: アクセスするライブラリの名前と同じユーザー名を作成する必要があります。たとえば、アクセスしたいライブラリが test である場合、test という名前のユーザー アカウントを作成する必要があります

Q1: tk.mybatis を使用して SQL を記述し、エンティティ クラスの ID に @GeneratedValue アノテーションが使用されている場合、爆発して NPC Jincang () に空ではない例外が表示されます。

D: ID の注釈 @GeneratedValue は、データの挿入時に ID に null 値を自動的に割り当てます。Mysql は挿入時に id を null 値としてサポートしますが、kingbase はサポートしていないため、この注釈を削除するだけで自動的に割り当てられます。データベースが移行されるとき、主キーとして ID を設定します。このアノテーションを使用する必要はありません

データを保存するときに、保存時にこのエンティティ クラスの返された ID 値を取得する必要がある場合は、継承した insertMapper ファイル内の tk.mybatis メソッドを書き換えて、2 つの新しいアノテーション @InsertProvider と @Options を追加する必要があります。

public interface InsertDAO<T> extends Marker,
        InsertMapper<T>,
    InsertSelectiveMapper<T>,
    MySqlMapper<T> {
    @Override
    @InsertProvider(type = BaseInsertProvider.class, method = "dynamicSQL")
    @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")
    int insert(T record);

    @Override
    @InsertProvider(type = BaseInsertProvider.class, method = "dynamicSQL")
    @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")
    int insertList(List<? extends T> recordList);

    @Override
    @InsertProvider(type = BaseInsertProvider.class, method = "dynamicSQL")
    @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")
    int insertSelective(T record);
}

おすすめ

転載: blog.csdn.net/GuaGea/article/details/131243487