[pgsql-jp: 40724] Re: 初めての投稿です。

Ishikawa Toshiyuki tosiyuki @ gol.com
2011年 3月 25日 (金) 15:43:54 JST


石川です。

コンソールで見るかぎりテーブルはあるがSELECTできない(そのような
テーブルが無いという警告)に逢ってます。データベースは元はテーブ
ル名を含めてS-JISだったらしい。ミグレーションの過程を経てUTF-8に
なっているものを所有しています。テーブル名はコンソールで見たとこ
ろ、「ABC表」です。
格納されているテーブル名をコンソールの表示ではなくhexで見たいと
思ってます。コンソールからは二重引用符で括ると特定できることは
わかった状態ですが、なぜがわかりません。
新たに「ABC表」を自分で作れば問題なくSELECT出来ます。ですから、
ミグレーションしたデータベースではかかる現象がでるのですが、そ
れを自分の環境で作って検証できないという状況です。これは libpq
の日本語ハンドリングに関することなのでしょうか。

本題とちょっとずれていればすいません。

On Fri, 25 Mar 2011 09:52:48 +0900
Norio Suzuki <suzuki @ tricorn.co.jp> wrote:

> 鈴木です。
> 
> At Thu, 24 Mar 2011 23:21:36 +0900,
> AKIHIKO ITO wrote:
> > 
> > 教えていただけるのでしたら、お願いなのですが、7.3系のポスグレで、ひとつのテーブルの名前が、文字化けと思われる現象で、dropしたいのですが、selectする時点で、テーブル名 dose not existsになります。
> 
> テーブル名は pg_class テーブルの relname カラムに格納されていますので、
> そこを UPDATE しちゃえば任意のテーブル名に変更できそうな気はします。
> 
> 
> 手元ですぐ試せる PostgreSQL 8.4 系で実験してみました。
> 
> この辺は 7.3 でも同じだったような【曖昧な】記憶がありますので、
> 実行は own risk で…
> 
> ------------------------------------------------------------------------
> 
> ■もとのテーブル名が test3
> # SELECT * FROM test3;
>  id | hoge 
> ----+------
>   1 | t
>   2 | f
> (2 行)
> 
> 
> ■pg_class の relname を UPDATE
> # SELECT oid,relname FROM pg_class ORDER BY relname;
> (snip)
>  18653 | test
>  18659 | test3
> (snip)
> 
> 
> ■test3 テーブルを test4 に変更。今回はテーブル名が使いにくそうなので oid を指定。
> # ustream=# UPDATE pg_class SET relname = 'test4' WHERE oid = '18659';
> UPDATE 1
> 
> 
> ■test4 で SELECT
> # SELECT * FROM test4;
>  id | hoge 
> ----+------
>   1 | t
>   2 | f
> (2 行)
> 
> 
> ■test3 は存在しなくなり、SELECT はできない
> # SELECT * FROM test3;
> ERROR:  relation "test3" does not exist
> 行 1: SELECT * FROM test3;
> 
> ------------------------------------------------------------------------
> 
> ;; ---------------------------------------------------------
> ;; 鈴木則夫 <suzuki @ tricorn.co.jp>
> ;; トライコーン株式会社 http://www.tricorn.co.jp/
> ;; 160-0015 東京都新宿区大京町24 住友外苑ビル5F
> ;; Tel 03-5919-0041 Fax 03-5919-0042


pgsql-jp メーリングリストの案内