[AWS] MariaDB+unixODBCでCONNECT接続時に文字化けする問題

前々回前回の記事でMariaDBからOracleやSQL Serverのデータを取得するため、unixODBCとCONNECTストレージエンジンを使って環境を構築した。

一部動作が怪しい所はあるものの概ね問題なく動いているのだが、一つ困ったこととして「エラーメッセージが文字化けする」という問題がある。

 

エラーメッセージ文字化け問題(Oracle編)

Oracleのビューに対してCONNECTでCREATE TABLEし、そのテーブルに対して編集しようとした(つまりビューを編集しようとした)らこのようなエラーメッセージが出た。

#HY000Got error 122 'Remote SQLExecDirect: [Oracle][ODBC][Ora]ORA-01732: ã\0081"ã\0081®ãƒ"ューã\0081§ã\0081¯ãƒ‡ãƒ¼ã‚¿æ"\008D作ã\0081Œç„¡åŠ¹ã\0081§ã\0081™
ヘルãƒ--: https://docs.orac' from CONNECT

↑ビューは編集できないのは分かるし、ORA-xxxxxの番号があるのでWeb検索すればエラー内容は理解できるんだけど、見事に文字化けしてる...。

まず調べてみた所、OracleのエラーメッセージはNLS_LANGに依存するとのこと。

確かに前々回の記事でSQL取得結果(日本語文字列)が「?」に文字化けしてしまうことから、環境変数に下記を設定した。

NLS_LANG=JAPANESE_JAPAN.JA16SJISTILDE

これによりエラーメッセージも日本語で表示されるようになったわけだ。

そこまではいいのだが、肝心の文字化けしてしまう原因については、どうやらUnixODBCがコード変換時に誤ってISO-8859-1でエンコードしてしまっているらしい。うーんポンコツ。困った。

[AWS] MariaDBからSQL ServerにCONNECTエンジンでDBリンクを張る方法

前回の記事ではMariaDBから同一ネットワーク上にあるOracleにCONNECTストレージエンジンを使って接続してみた。

今回はその続きで、MariaDBからSQL Serverにリンクしてみた。

 

参考記事

今回はこちらの記事を参考にした。

【MySQL】MariaDB使用connect引擎直接访问SQLServer数据库 - abce - 博客园

使用するODBC Driver for SQL Serverのバージョンが違うことを除けば、ほぼこの手順のとおりで完了する。

その他の細かい設定などは前の記事で実施済みなので割愛する。

[AWS] MariaDBからOracleにCONNECTエンジンでDBリンクを張る方法

AWS EC2上に作成されたAmazon Linux 2023 + MariaDB 10.5の環境から、同じネットワーク内にある他DBMSを参照する(OracleでいうところのDBLINK、SQL Serverでいうところのリンクサーバー)のが思ったより大変だったので備忘録として残しておく。

 

FEDERATEDエンジンを当たるも空振り

まず適当に「MariaDB DBLINK」などとWeb検索すると、こういう記事が見つかった。

mysql/mariadb外部表(DBLINK,FEDERATED)の利用方法 #MySQL8.0 - Qiita

詳しくはよくわからないが、

MariaDB > create table dummyTable (id int ,name varchar(255))
-> ENGINE=FEDERATED
-> default charset=utf8
-> CONNECTION='mysql://xxxx:xxxx@xxxxx/xxxxxx/dummyTable';

という書き方をすればDBLINKに相当することが実現できるらしい・・・?

が、何度やっても上手く行かない。というか「mysql://」スキーマにOracleのIPアドレスを入れたところで動く気がしない。

「ENGINE=FEDERATED」と書かれているとおり、これは「Federatedエンジン」を使用して外部テーブルにアクセスする仕組みのようだ。

ETC車載機の調子が悪かったのでヒューズを交換した

今の車を中古で買ったときにサービスで付けてもらったETC車載器の調子が悪い。

初めはETCゲートを通過できたりできなかったり不安定だったが、段々と反応すらしなくなり、遂に電源が入らなくなった。

元々販売店で要らなくなった物をオマケで付けてくれたもので、当然ながら中古品。

古いから仕方がないかなぁと思っていたけど、調べてみたらヒューズ切れの可能性があるらしい。

[Powerbuilder] Tips: Nullの扱いには気をつけよう

PowerbuilderとNullの扱い

PowerScriptやDatawindow式では、式や関数の引数にNull値が含まれると、結果は全てNullになる

これは結構陥りやすい罠なので要注意。

Most functions that have a null value for any argument return null. Any expression that has a variable with a null value results in null.
引数にNULL値を持つ関数のほとんどはNULLを返します。
NULL値を持つ変数を持つ式はすべてNULLになります。

A boolean expression that is null is considered undefined and therefore false.
nullである論理式は未定義とみなされ、したがって偽となります。

SyBooks Online (Archive)

つまり「どこか一つでもNullが入ると全部Nullが返ってくる」と考えた方がいい。Nullチェック重要。