
Contents
- 問題の再現
- 対策
1:コンソールのコードページを変える - 対策
2:ページャを不使用にする(クエリが ASCII のみの場合) - MySQL5.6
以降は Windows コンソールで UTF-8 を使えるらしい 関連記事 : 2016年 6 月 24 日(ページャにWindows版lessを使う対策。まだ不十分ですがNot enough memoryは出なくなります)
問題の再現
下記の実行環境で試し、どれも同じ結果でした。- Windows
7 32bit(日本語版)+ PostgreSQL Portable 9.4 + コマンドプロンブト、ConEmu - Windows
7 64bit(日本語版)+ PostgreSQL Portable 9.3 + コマンドプロンブト - Windows
7 32bit(英語版)+ PostgreSQL Portable 9.2 + コマンドプロンブト
以下、最初の環境での例で、スクリーンキャプチャ画像は
> chcp 65001 Active code page: 65001 > psql -U postgres psql (9.4.1) WARNING: Console code page (65001) differs from Windows code page (932) 8-bit characters might not work correctly. See psql reference page "Notes for Windows users" for details. Type "help" for help. postgres=# SELECT 1; Not enough memory.

接続時の同様の警告は、Shift JIS(日本語版
psql
> psql -U postgres psql (9.4.1) "help" でヘルプを表示します. <-こう出れば、通常の Shift JIS で接続してる postgres=# SELECT 1; ?column? ---------- 1 (1 行) <- ここまで正常 postgres=# \! chcp 65001 <- コードページ変更(ここで画面クリアされる) Active code page: 65001 postgres=# SELECT 1; Not enough memory. <- やっぱりエラー
対策 1:コンソールのコードページを変える
Windowspostgres=# \! chcp 932 <-実行直後、画面クリアされる 現在のコード ページ: 932 postgres=# \encoding SJIS <- 念のため postgres=# SELECT chr(12362) || chr(12431) || chr(12426); ?column? ---------- おわり (1 row)

対策 2:ページャを不使用にする(クエリが ASCII のみの場合)
Not enough memorypostgres=# \! chcp <-確認 Active code page: 65001 postgres=# SELECT 1; <- 問題の確認 Not enough memory. postgres=# \pset pager off Pager usage is off. postgres=# \encoding SJIS <- これないと、何故かクエリ結果の日本語が文字化け postgres=# SELECT chr(12362) || chr(12431) || chr(12426); ?column? ---------- おわり (1 row) <- ASCII のみのクエリは一応実行できてる postgres=# SELECT 'あいうえお'; \q <- psql が落ちた

上の例ではクエリを投げてますが、ただコンソールに文字を表示するだけのコマンド「\echo
MySQL5.6 以降は Windows コンソールで UTF-8 を使えるらしい
Win»
» コマンドプロンプトで
» コマンド「chcp 65001」を実行してコマンドプロンプトの文字エンコードを
でも
» 配電盤