A5:SQL Mk-2

開発のこと、日々のこと

スキーマの比較機能について

ホーム フォーラム A5:SQL Mk-2掲示板 スキーマの比較機能について

  • このトピックには6件の返信、2人の参加者があり、最後にotoroにより5年、 11ヶ月前に更新されました。
7件の投稿を表示中 - 1 - 7件目 (全7件中)
  • 投稿者
    投稿
  • #1704 返信
    otoro
    ゲスト

    こんにちは。

    ・使用環境
    A5:SQL Mk-2 64bit edition (Portable mode) Version 2.12.3
    A5:SQL Mk-2 64bit edition (Portable mode) Version 2.13.0 beta 50
    DB:mysqld 10.1.13-MariaDB/InnoDB
    OS:Windows10

    細かな発生条件を特定できていないのですが、「スキーマの比較」を行った際に、両方のデータベースに存在するテーブルの一覧が、そのまま差分として出力されてしまうことがあります。

    DB1に100個のテーブル、DB2に150個のテーブルがある状態で比較

    DB1とDB2の総テーブル数250件分の「スキーマ localhost/aaa.bbb にテーブル ccc が見つかりません。」というメッセージが出力されます。
    実際には重なりのある100個中90個ほどのテーブルは同一名称で、そのうち80個ほどのテーブルは同一構造です。

    ・DB1とDB2、DB2とDB3の比較では現象が必ず再現し、DB1とDB3では再現しないことから、DB2に起因する問題だと思います。
    ・DB2にのみ、 _ から始まるテーブル名が複数存在します(_tmp_sales)。
    ・DB2にのみ、数字を含んだテーブル名が存在します(_tmp_ab03)。
    ・DB2にのみ、34文字の比較的長いテーブル名が存在します。
    ・DB2にのみ、COLLATE utf8_binで作成したテーブルが存在します。その他はutf8_general_ciです。

    回避策やお心当たりがあれば教えていただけないでしょうか。

    #1848 返信
    松原正和
    キーマスター

    otoro さんこんにちは。

    調査したところ、スキーマ名の照合順序がAnsi(Shift_JIS)で行っている箇所と、Unicodeで行っている箇所が在りました。多分それが原因ではないかと思います。

    Version 2.13.0 release candidate 1で修正してみましたのでご確認いただければと思います。

    #1877 返信
    otoro
    ゲスト

    こんにちは、ご対応ありがとうございます。
    「a5m2_2.13.0_rc1_x64」にて、問題の起きていたDB2とその他のDB間の比較も可能になっていました。
    ただ、使用上問題はないものの、その結果の中に次のようなメッセージが表示されるテーブルがいくつかありましたので、追加でご報告させていただきます。

    テーブル localhost/DB1.DB1.aaa にインデックス code が見つかりません。
    `テーブル localhost/DB1.DB1.aaa にインデックス PRIMARY が見つかりません。

    それらに共通しているのは、
    ・テーブルに code という名称のカラムを含んでいる
    ・DB2側に code という名称のインデックスを追加している
    ・DB1側(3行目)の PRIMARY という文字が青文字で出力されている(1行目のPRIMARYは通常の黒字)
    ・DB1側には元々1件しかレコードがなく、PRIMARY KEY idの指定はあるもののその他のインデックスが存在せずINDEX_LENGTHが0の状態
    ・スキーマ1,2の指定を逆にしても状況は変わらない
    ということくらいだと思います。

    #1928 返信
    松原正和
    キーマスター

    otoroさんこんにちは。

    はい、すみません、テーブル名のところだけかと思っていたところ、他の箇所でも並べ替えはANSIで行って、その後の比較をUnicodeで行うために照合順序がおかしくなっている箇所が在りました。

    Version 2.13.0 release candidate 2で修正しましたのでご確認ください。

    #1989 返信
    otoro
    ゲスト

    こんにちは、ご対応ありがとうございます。

    さっそく2.13.0 RC2で試させていただいたのですが、色々選択肢を変更してみても、PRIMARYが差分として出てしまう現象はRC1の状態から変化しませんでした。

    これに関係がある事柄かは分からないのですが、2.13.0のbeta28(27は2.12.3と同じ)から、テーブルのソースタブの予約語(int、NOT NULL、COMMENT等)のカラーリングが失われていて、「CREATE TABLE(青文字)」~「PRIMARY KEY(青文字)」の間にある通常のテーブル列の部分が、全て黒文字表示になっていました。
    それが意図されている仕様なら問題ないのですが、もしかしたらその辺りで、何かをうまく検出できていないのかなと思いました。

    #2010 返信
    松原正和
    キーマスター

    otoroさんこんにちは。

    はい、確認したところ、まだ大文字小文字の扱いのおかしいところがありました。どうも、PRIMARYやcodeのように大文字小文字のインデックス名が混在していた際に問題が起こっていたようです。

    version 2.13.0 release candidate 3で修正してみましたのでご確認お願いします。

    #2017 返信
    otoro
    ゲスト

    こんにちは、ご対応ありがとうございます。
    RC3にて、スキーマの比較と、ソースタブの文字表示が、正常に動作するようになっているのを確認いたしました。
    別々の問題だったようですが、両方ともご対応していただいたようで、本当にありがとうございました。

7件の投稿を表示中 - 1 - 7件目 (全7件中)
返信先: スキーマの比較機能についてで#1848に返信
あなたの情報:




コメントは受け付けていません。