2007年06月06日

IDSAdminとWindowsとDELIMIDENT...

今日、Windows上でIDSAdminを動かそうとしてトラブルに陥っている知人に会いました。環境を見せてもらうと、IDSAdminが発行しているSQLがエラーを発生させています。データベース上に確かに存在している表で、表の所有者も間違っていません。

しばらく原因がわからなかったのですが、ふと Windows のユーザー名に目がとまりました。ユーザー名に「大文字」が使われていたのです。どうやら、Informixは、ユーザー名などの識別子を引用符で囲まないと( 囲むためには、環境変数 DELIMIDENT を使う必要があります ) 小文字に変換してから処理をしているようです。かつ、ユーザー名を確認する時にWindows 上では、OSから返ってくるユーザー名をそのまま参照して比較しているようです。このため、例えばこんなことが起こっているようです。

Windows上のユーザー名: SHIBUYA
失敗するSQL文の例:
SELECT * FROM shibuya.mytable;
SELECT * FROM SHIBUYA.mytable;
成功するSQL文の例:
SELECT * FROM mytable;
SELECT * FROM 'SHIBUYA'.mytable; -- ( ユーザー名を引用符で囲むには事前に環境変数DELIMIDENTを設定する必要があります。)


IDSAdminは、ユーザー名をつけたSQLを生成する時にユーザー名を引用符で囲みません。このため、Windows上のIDSインスタンスに対して使う時は、Windowsのユーザー名に大文字を使うと嵌ります。気をつけた方が良いですね。もしInformixで使用するユーザー名に大文字を含む名前をつけてしまっていたら、コントロールパネルの管理ツールを使ってユーザー名を変更しておくことをお勧めします。





同じカテゴリー(ちょっと細かいテックネタ)の記事
DBACCESS_COLUMNS
DBACCESS_COLUMNS(2020-04-03 00:33)


※このブログではブログの持ち主が承認した後、コメントが反映される設定です。
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。