Windows版の psql を立ち上げると、新しいウィンドウが開き、サーバ名やデータベース名などを最初に聞かれるんだが、ここで Client Encoding で UTF8 を指定してしまい、テーブルを作成しようとして失敗し、情報も文字化けという悲しいことになった。
Server [localhost]:Database [postgres]: rmdbPort [5432]:Username [postgres]: runmanagerClient Encoding [SJIS]: UTF8ユーザー runmanager のパスワード:psql (18.3)"help"でヘルプを表示します。rmdb=> CREATE TABLE t_receive_log (rmdb(>rmdb(> id int NOT NULL, -- レースIDrmdb(> log_no int NOT NULL, -- レース内ログ・ファイル番号rmdb(> log_path varchar(1024) NOT NULL, -- ログファイルのフルパスrmdb(> note varchar(128), -- ログ・ファイルの説明rmdb(> cdate timestamp without time zone,rmdb(> udate timestamp without time zone,rmdb(>rmdb(> CONSTRAINT t_receive_log_pkey PRIMARY KEY (rmdb(> id, log_normdb(> )rmdb(> );ERROR: invalid byte sequence for encoding "UTF8": 0x83rmdb=> \dリレーション一覧\x83X\x83L\x81[\x83} | \x96\xBC\x91O | \x83^\x83C\x83v | \x8F\x8A\x97L\x8E----------------------+---------------+-------------------------+-------------------public | m_race | \x83e\x81[\x83u\x83\x8B | runmanager(1 行)
そう。Windows の端末文字コードって、Windows11の今でも Shift_JIS なんやね。
まあ、俺は DB のエンコードのことかと完全に認識が間違ってたんだけど(笑)
というわけで、Client Encoding を Shift_JIS に修正してもう一度 TABLE CREATE を実行。
問題なくテーブルが作成された(まあ、CREATE文の日本語でのコメントを消せば実行できたんだけど(笑)。それは本質的な解じゃないからな(笑))
rmdb=> set client_encoding to SJIS;SETrmdb=> CREATE TABLE t_receive_log (rmdb(>rmdb(> id int NOT NULL, -- レースIDrmdb(> log_no int NOT NULL, -- レース内ログ・ファイル番号rmdb(> log_path varchar(1024) NOT NULL, -- ログファイルのフルパスrmdb(> note varchar(128), -- ログ・ファイルの説明rmdb(> cdate timestamp without time zone,rmdb(> udate timestamp without time zone,rmdb(>rmdb(> CONSTRAINT t_receive_log_pkey PRIMARY KEY (rmdb(> id, log_normdb(> )rmdb(> );CREATE TABLErmdb=> \dリレーション一覧スキーマ | 名前 | タイプ | 所有者----------+---------------+----------+------------public | m_race | テーブル | runmanagerpublic | t_receive_log | テーブル | runmanager(2 行)
ばっちり。
電気ウナギ的○○
About Backコメント(0)
電気ウナギ的○○