善良な人、
MS Access の ORDER BY 句が非 ASCII 方式でレコードをソートすることを確認しました。これは、通常 ASCII に準拠している MySQL とは異なります。なぜこれが私にとって問題なのかを理解していただけるように、背景を少し説明させてください。
2010 年に、私は汎用データベース トランザクション ロガーを作成しました。目標は、(理論的には) SQL データベースで発生した変更を検出し、それらを別のデータベースに記録することでした。これを行うために、ソース データベース全体のコピーを保持するシャドー MySQL データベースを使用します。シャドウ データベースは、EAV モデルを使用して設計されているため、ソース データベース スキーマに依存しません。
ときどき、ソース データベースとシャドウ データベースの両方から読み取り、主キーに基づいてレコードを並べ替え、1 対 1 で対応するようにレコードをフォーマットします。次に、マージ アルゴリズムを使用してデータベース全体を比較します。
このソリューションは、先週、ユーザーが文字列の主キーを持つ Access データベースに対して設定するまで問題なく機能していましたが、これは常に英数字であるとは限りません。突然、ソース データベースで発生していないゴースト トランザクションのログがソフトウェアによって開始されました。
詳しく調べてみると、MS Access は MySQL とは異なる方法で英数字以外の文字を注文することがわかりました。そのため、ソース レコードとシャドウ レコードの両方で同様の並べ替え順序を想定するマージ アルゴリズムが失敗し始めました。
今、ソフトウェアを微調整して、そのような主キーを使用する前に「修復」する方法を見つけましたが、MS Access の順序付けスキームの性質を正確に知っていれば、非常に役立ちます。どんなアイデアでも大歓迎です。
PS: 明確にする必要がある場合はお知らせください。役に立たない可能性のあるものをあまり入力しないようにしています。