ページ更新: 2006-06-17 (土) (6126日前)
メモとかトラブルシューティングとか。 目次
[エラー] cygserverをコマンドラインから起動すると「failed to create named pipe: is the daemon already running?」と表示される (2005-09-30) #[教えて!goo] cygserverが起動しません・・(Cygwin)より。 cygserverがすでにNTサービスとして稼働しているとき、もう一つcygserverをコマンドラインから起動するとエラーが発生する。 Windows NT系(NT/2000/XPなど)で cygserver-configを実行すると、cygserverはサービスに登録される。 このサービスのスタートアップの種類は「自動」で登録されているため、OSを再起動するとcygserverはサービスとして起動する。 すでにcygserverが動作しているときに、もう1つcygserverを起動すると、このエラーが発生する。 [編集]再現手順 #cygserverサービスを起動し、次にcygserverをもう一つ実行する $ net start cygserver CYGWIN cygserver サービスを開始します. CYGWIN cygserver サービスは正常に開始されました。 $ /usr/sbin/cygserver.exe cygserver: Initialization complete. Waiting for requests. cygserver: failed to create named pipe: is the daemon already running? ★エラー cygserver: fatal error on IPC transport: closing down ★エラー cygserver: Shutdown finished. ★ctrl-Cで強制終了した cygserverサービスを停止すると、cygserver.exeをちゃんと実行できるようになる。 $ net stop cygserver CYGWIN cygserver サービスを停止中です. CYGWIN cygserver サービスは正常に停止されました。 $ /usr/sbin/cygserver.exe cygserver: Initialization complete. Waiting for requests. cygserver: Shutdown finished. ★ctrl-Cで強制終了した[編集] 解決方法 #次のいずれか
[エラー] cygwin 1.5.18-1 + postgresql 7.4.5-1でpostmasterが起動できない(Segmentation faultが起きる) (2005-08-25) #Cygwin なんでも掲示板 No.2996 [PostgreSQL]postmaster起動時のエラー対処方法についてより。
障害内容 #cygwin 1.5.18-1 + postgresql 7.4.5-1 にて、 postmasterを起動しようとするとSegmentation faultが発生し、postmasterが起動できない。 [編集]情報と対処方法 #このエラーはメーリングリストの次のメールで報告されている。
解決方法は同じく:
これによると、2005-Aug-06のCygwin Snapshotsで修正(対策)されたとのこと。 よって、次のいずれかの作業を行えばよいはず。
今回は、Cygwin Snapshotsでより新しいcygwin1.dllを入れることにした。 なぜなら古いcygwin1.dllではちゃんと動いていただろうから、わざわざ検証する意味も少ないので。 (もちろん古いcygwin1.dllを使った方がたぶん無難なので、あまりお勧めしないが) もっとも、PostgreSQLをCygwinで動かさないってのもテかと (2005-10-25)
追試手順 #Windows 2000 Professional SP4 (VMware上の環境) に、cygwinのデフォルトパッケージと postgresqlパッケージのみを入れて検証した。 インストール手順は省く。c:\cygwinにインストールした。 $ cygserver-config : (略) $ /usr/sbin/cygserver & : (略) $ export CYGWIN=server $ ipcs : (略) $ mkdir pgdata $ initdb --no-locale -D pgdata : (略) postmasterを起動すると、Segmentation faultが発生する。 $ postmaster -D pgdata Segmentation fault (core dumped) coreの解析も行うべきだろうが、省略。 [編集]Cygwin Snapshotsを入れてみる #現時点での最新版 2005-Aug-24 を試してみる。 [編集]cygwin1.dllのみを入れ替えた場合 #cygwin1-20050824.dll.bz2 をダウンロードする。 展開する。(オプションは -v:vervose -k:keep-file -d:decompress) $ bunzip2 -vkd cygwin1-20050824.dll.bz2 cygwin1-20050824.dll.bz2: done $ ls cygwin1-20050824.dll cygwin1-20050824.dll.bz2 Cygwinのソフトウェア(bashやcygserverも)をすべて終了したのち、 エクスプローラーなどを使ってc:\cygwin\bin\cygwin1.dllに上書きコピーする。 再度、postmasterを起動すると、エラーは発生せず、起動できた。 (cygserverの起動、環境変数CYGWINの設定は省略) $ postmaster -D pgdata WARNING: dup(0) failed after 3196 successes: Bad file descriptor LOG: database system was shut down at 2005-08-25 19:21:16 LOG: checkpoint record is at 0/9DDFA0 LOG: redo record is at 0/9DDFA0; undo record is at 0/0; shutdown TRUE LOG: next transaction ID: 536; next OID: 17142 LOG: database system is ready[編集] cygwin1.dllとその周辺ファイルをすべて入れ替えた場合 #cygwin-inst-20050824.tar.bz2 をダウンロードする。 展開する。展開先(-C)は/なので、既存のファイルを直接上書きしている。 $ tar jxvf cygwin-inst-20050824.tar.bz2 -C / etc/ etc/defaults/ etc/defaults/etc/ etc/defaults/etc/cygserver.conf usr/ usr/bin/ usr/bin/cygcheck.exe usr/bin/cygpath.exe usr/bin/cygserver-config usr/bin/cygwin1.dll tar: usr/bin/cygwin1.dll: Cannot open: File exists ★bashやtarが使用中なので上書きできない usr/bin/dumper.exe usr/bin/getfacl.exe usr/bin/ipcrm.exe usr/bin/ipcs.exe usr/bin/kill.exe usr/bin/mkgroup.exe usr/bin/mkpasswd.exe usr/bin/mount.exe usr/bin/passwd.exe usr/bin/ps.exe usr/bin/regtool.exe usr/bin/setfacl.exe usr/bin/ssp.exe usr/bin/strace.exe usr/bin/umount.exe usr/include/ : (略) usr/share/man/man7/regex.7 tar: Error exit delayed from previous errors cygwin1.dllだけを別途展開する。 $ tar jxvf cygwin-inst-20050824.tar.bz2 usr/bin/cygwin1.dll usr/bin/cygwin1.dll Cygwinのソフトウェア(bashやcygserverも)をすべて終了したのち、 エクスプローラーなどを使ってc:\cygwin\bin\cygwin1.dllに上書きコピーする。 再度、postmasterを起動すると、エラーは発生せず、起動できた。 (cygserverの起動、環境変数CYGWINの設定は省略) $ postmaster -D pgdata WARNING: dup(0) failed after 3196 successes: Bad file descriptor LOG: database system was shut down at 2005-08-25 20:00:32 LOG: checkpoint record is at 0/9DE078 LOG: redo record is at 0/9DE078; undo record is at 0/0; shutdown TRUE LOG: next transaction ID: 538; next OID: 17142 LOG: database system is ready[編集] [メモ] cygserverをサービスから削除する (2005-01-28) #サービスに登録されたcygserverをサービスから削除するには、cygrunsrv を使って次のようにする。 $ cygrunsrv -E cygserver ★サービスを停止する。 $ cygrunsrv -Q cygserver ★停止を確認する。 Service cygserver exists Type : Own Process Current State : Running Controls Accepted : Accept Stop $ cygrunsrv -R cygserver ★サービスから削除する。 $ cygrunsrv -Q cygserver ★削除したことを確認する。 cygrunsrv: Error querying a service: OpenService: Win32 error 1060: 指定されたサービスはインストールされたサービスとして存在しません。
cygrunsrvのこれらのオプションの説明を知りたいときは cygrunsrv --help を実行すれば 表示される。より詳しく知りたいときは /usr/share/doc/Cygwin/cygrunsrv.README を見ること。 なお、Windows XP Professionalの場合、付属の sc (Windows XP Professional のみ) を 使って同じことができる。 $ sc query cygserver SERVICE_NAME: cygserver TYPE : 10 WIN32_OWN_PROCESS STATE : 4 RUNNING (STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN) WIN32_EXIT_CODE : 0 (0x0) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x0 $ sc stop cygserver SERVICE_NAME: cygserver TYPE : 10 WIN32_OWN_PROCESS STATE : 3 STOP_PENDING (STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN) WIN32_EXIT_CODE : 0 (0x0) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x2 WAIT_HINT : 0x5208 $ sc delete cygserver [SC] DeleteService SUCCESS $ sc query cygserver [SC] EnumQueryServicesStatus:OpenService FAILED 1060:[編集] [エラー] Cygwin+PostgreSQLでWindowsハンドルの開放漏れ? (2004-12-21) #http://ml.postgresql.jp/pipermail/pgsql-jp/2004-December/018061.html http://ml.postgresql.jp/pipermail/pgsql-jp/2004-December/thread.html#18061 http://ml.postgresql.jp/pipermail/pgsql-jp/2004-December/018077.html
追試 #追試、とは言っても環境が違うけど。(Cygwin 1.5.12-1, cygserver 1.11, Windows XP SP1) 2004-12-22 時点の最新版 Cygwin 1.5.12-1 と cygserver の情報。 $ cygcheck -cd cygwin Cygwin Package Information Package Version cygwin 1.5.12-1 $ /usr/sbin/cygserver --version cygserver: (cygwin) 1.11 API version 1.5.12(0.116/4/1)-(3.0.0.2) 2004-11-10 08:34 Copyright 2001, 2002, 2003 Red Hat, Inc. Compiled on Nov 10 2004 Default configuration file is /etc/cygserver.conf postgresql.confの内容。 max_connections = 40 shared_buffers = 1000 # min 16, at least max_connections*2, 8KB each checkpoint_timeout = 30 # range 30-3600, in seconds log_statement = true lc_messages = 'C' # locale for system error message strings lc_monetary = 'C' # locale for monetary formatting lc_numeric = 'C' # locale for number formatting lc_time = 'C' # locale for time formatting cygserverとpostmasterはNTサービスとして実行。 コンピュータの管理→パフォーマンスログと警告→カウンタログに cygserverのログ設定を作り、ハンドル数をc:\PerfLogs\cygserverに出力するように したのち、ログ取得を開始。 tailでログを監視。 $ tail -f /c/PerfLogs/cygserver_20041223.tsv "12/23/2004 00:08:18.699" "84" "12/23/2004 00:08:33.696" "84" "12/23/2004 00:08:48.693" "84" "12/23/2004 00:09:03.690" "84" "12/23/2004 00:09:18.687" "84" "12/23/2004 00:09:33.684" "84" "12/23/2004 00:09:48.681" "84" : (略) "12/23/2004 12:43:16.958" "84" "12/23/2004 12:43:31.958" "85" "12/23/2004 12:43:46.958" "85" : (略) "12/23/2004 18:52:01.418" "85" "12/23/2004 18:52:16.418" "84" "12/23/2004 18:52:31.418" "84" "12/23/2004 18:52:46.418" "84" "12/23/2004 18:53:01.418" "84" "12/23/2004 18:53:16.418" "84"[編集] [エラー] now() の値が18時間ずれる (2004-09-30) #直接関係ないが、「[pgsql-jp: 34019] PostgreSQLのnow() がシステムクロックとずれる現象」を見て、TZの設定について書いてなかったことに気がついたので。 今回もトラブルシューティングをかねて、ちまちまと周りから攻めてみる。
[編集] 環境 #Windows XP SP1 を使用。Cygwinのパッケージはこんなの。 $ cygcheck -cd cygwin postgresql Cygwin Package Information Package Version cygwin 1.5.11-1 postgresql 7.4.5-1[編集] psql では #now()の結果がおかしい (18時間ずれる) まずはbash上で環境変数を確認。どちらも未定義。 $ echo $TZ $ echo $PGTZ psqlでshow TimeZone;してみる。 $ psql -c 'show TimeZone;' TimeZone ----------- -09:00:00 (1 row) psqlで now() してみる。 と、(24+1)-7 = 18時間ずれてる。 (18 = 9 x 2 な訳で、処理が2重に行われている?) $ date; psql -c 'select now();' Thu Sep 30 01:12:13 2004 now ----------------------------- 2004-09-29 07:12:13.6755-09 (1 row) TZを定義してみる。改善せず。 $ date; TZ=JST-9 psql -c 'select now();' Thu Sep 30 01:12:28 2004 now ----------------------------- 2004-09-29 07:12:28.1595-09 (1 row) PGTZを定義してみる。OK。 $ date; PGTZ=JST-9 psql -c 'select now();' Thu Sep 30 01:12:38 2004 now ----------------------------- 2004-09-30 01:12:38.6505+09 (1 row)
CSE #libpq.dll (PostgreSQL 6.5の) を使用。 同様。システム環境変数 PGTZ を設定すると、大丈夫。 [編集]Java #/usr/share/postgresql/java/postgresql.jar を使って、次のコードを実行。 あるいは PostgreSQL JDBC Driver の pg74.215.jdbc3.jar を使用。 import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class PostgreSQLTrial { public static void main(String[] args) { System.out.println(Calendar.getInstance().getTime()); PostgreSQLTrial trial = new PostgreSQLTrial(); try { trial.doProcess(); } catch (Exception e) { e.printStackTrace(); } } void doProcess() throws Exception { Class.forName("org.postgresql.Driver"); Connection c = DriverManager.getConnection("jdbc:postgresql:dbname", "postgres", "password"); Statement s = c.createStatement(); try { ResultSet rs = s.executeQuery("select now();"); while(rs.next()) { String now = rs.getString("now"); System.out.println("now='" + now + "'"); } } finally { s.close(); c.close(); } } } 結果 いずれのJDBCドライバでも、ずれている。 Thu Sep 30 01:26:06 JST 2004 now='2004-09-29 07:26:06.367125-09' 同様にずれている。PGTZ を定義しても直らず。 postmaster の起動オプション(cygrunsrvの--env)で TZ=GMT すると、 正しい値が出る。(1+24)-16 = 9。Time Zone が GMT (+00) だけど。 Thu Sep 30 01:42:50 JST 2004 now='2004-09-29 16:42:51.197875+00' ということは、postmaster のTZの処理がおかしい? そこで、システム環境変数 TZ に「JST-9」を指定、Windowsを再起動し (postmasterをNTサービスとして動かしているので)、試したところ、 正常になった。 Thu Sep 30 02:05:43 JST 2004 now='2004-09-30 02:05:44.67325+09'[編集] 結局、 #psql と CSE (libpq.dllを使う物)は 環境変数 PGTZ に「JST-9」を入れれば解決できる。 また、Javaを使うなら、PGTZ は定義せずに(しても良いかも知れないが試していない)、 TZに「JST-9」を設定する。 ちなみに、6.5のlibpq.dllだと、PGTZ を見ているようだ。 $ strings libpq.dll | grep -C 3 PGTZ client_encoding PGCLIENTENCODING timezone PGTZ datestyle PGDATESTYLE Backend-Debug-Options Cygwin の postgresql の pq.dll も同じ。 $ strings pq.dll | grep -C 3 PGTZ SSL-Mode PGDATESTYLE datestyle PGTZ timezone PGCLIENTENCODING client_encoding[編集] [エラー] postmaster を動作させたまま initdb を実行すると、initdb が失敗する (2004-09-09) #(作成中。) $ uname -a CYGWIN_NT-5.1 hostname 1.5.11(0.116/4/2) 2004-09-04 23:17 i686 unknown unknown Cygwin $ cygcheck -cd cygwin postgresql Cygwin Package Information Package Version cygwin 1.5.11-1 postgresql 7.4.5-1 $ /usr/sbin/cygserver --version cygserver: (cygwin) 1.10 API version 1.5.11(0.116/4/1)-(3.0.0.2) 2004-09-04 23:17 Copyright 2001, 2002, 2003 Red Hat, Inc. Compiled on Sep 4 2004 Default configuration file is /etc/cygserver.conf $ pwd /home/username/tmp $ initdb --no-locale -D ./a The files belonging to this database system will be owned by user "username". This user must also own the server process. The database cluster will be initialized with locale C. creating directory ./a... ok creating directory ./a/base... ok creating directory ./a/global... ok creating directory ./a/pg_xlog... ok creating directory ./a/pg_clog... ok selecting default max_connections... 10 ★あれ? selecting default shared_buffers... 50 ★あれ? creating configuration files... ok creating template1 database in ./a/base/1... FATAL: could not create semaphores : No space left on device DETAIL: Failed system call was semget(1, 17, 03600). HINT: This error does *not* mean that you have run out of disk space. It occurs when either the system limit for the maximum number of semapho re sets (SEMMNI), or the system wide maximum number of semaphores (SEMMNS), woul d be exceeded. You need to raise the respective kernel parameter. Alternativel y, reduce PostgreSQL's consumption of semaphores by reducing its max_connections parameter (currently 10). The PostgreSQL documentation contains more information about configuring your system for PostgreSQL. initdb: failed initdb: removing data directory "./a" $ net stop cygserver CYGWIN cygserver サービスを停止中です. CYGWIN cygserver サービスは正常に停止されました。 エラーメッセージに従い、SEMMNI か SEMMNS を増やしてみる。 /etc/cygserver.conf を編集。README にちょっと書いてあるので、 semmns を増やしてみる。 kern.ipc.semmns 60 kern.ipc.semmns 120 $ net start cygserver CYGWIN cygserver サービスを開始します. CYGWIN cygserver サービスは正常に開始されました。 $ ipcs Message Queues: T ID KEY MODE OWNER GROUP Shared Memory: T ID KEY MODE OWNER GROUP Semaphores: T ID KEY MODE OWNER GROUP $ net start postmaster CYGWIN PostgreSQL サービスを開始します. CYGWIN PostgreSQL サービスは正常に開始されました。 $ ipcs Message Queues: T ID KEY MODE OWNER GROUP Shared Memory: T ID KEY MODE OWNER GROUP m 65536 5432001 --rw------- postgres なし Semaphores: T ID KEY MODE OWNER GROUP s 65536 5432001 --rw------- postgres なし s 65537 5432002 --rw------- postgres なし s 65538 5432003 --rw------- postgres なし $ initdb --no-locale -D ./c The files belonging to this database system will be owned by user "username". This user must also own the server process. The database cluster will be initialized with locale C. creating directory ./c... ok creating directory ./c/base... ok creating directory ./c/global... ok creating directory ./c/pg_xlog... ok creating directory ./c/pg_clog... ok selecting default max_connections... 50 selecting default shared_buffers... 1000 creating configuration files... ok creating template1 database in ./c/base/1... ok initializing pg_shadow... ok enabling unlimited row size for system tables... ok initializing pg_depend... ok creating system views... ok loading pg_description... ok creating conversions... ok setting privileges on built-in objects... ok creating information schema... ok vacuuming database template1... ok copying template1 to template0... ok Success. You can now start the database server using: /usr/bin/postmaster -D ./c or /usr/bin/pg_ctl -D ./c -l logfile start $[編集] ipcs のオプション #(作成中。Cygwin/cygserver に書いたほうがよいかも。) $ ipcs -h usage: ipcs [-abchmopqstuMQST] ipcs prints information for IPC resources for which you have read access. -a Show the maximum amount of information possible when displaying active semaphores, message queues and shared memory segments (This is shorthand for specifying -bcopt). -b Show the maximum allowed sizes for active semaphores, message queues and shared memory segments. The maximum allowed size is the maximum number of bytes in a message on a message queue, the size of a shared memory segment, or the number of semaphores in a set of semaphores. -c Show the creator's name and group for active semaphores, message queues, and shared memory segments. -h This help. -m Display information about active shared memory segments. -o Show outstanding usage for active message queues and shared memory segments. The outstanding usage is the number of messages in a message queue, or the number of processes attached to a shared memory segment. -p Show the process ID information for active semaphores, message queues and shared memory segments. The process ID information is the last process to send a message to or receive a message from a message queue, the process that created a semaphore, or the last process to attach or detach a shared memory segment. -q Display information about active message queues. -s Display information about active semaphores. -t Show access times for active semaphores, message queues and shared -u Show system wide usage of IPC resources. This information is added as a list after the appropriate shared memory, messages queue or semaphore information output -M Display system information about shared memory. -Q Display system information about messages queues. -S Display system information about semaphores. -T Display system information about shared memory, message queues and semaphores. $[編集] [メモ] postgresql.conf で log_statement = true にしたときのログ (2004-08-25) #postgresql.conf で log_statement = true にして、pgbench を実行したときのログ。 LOG: statement: SET search_path = public LOG: statement: select count(*) from branches LOG: statement: vacuum branches LOG: statement: vacuum tellers LOG: statement: delete from history LOG: statement: vacuum history LOG: statement: SET search_path = public LOG: statement: begin LOG: statement: update accounts set abalance = abalance + 315 where aid = 48941 LOG: statement: select abalance from accounts where aid = 48941 LOG: statement: update tellers set tbalance = tbalance + 315 where tid = 5 LOG: statement: update branches set bbalance = bbalance + 315 where bid = 1 LOG: statement: insert into history(tid,bid,aid,delta,mtime) values(5,1,48941,315,'now') LOG: statement: end LOG: statement: begin LOG: statement: update accounts set abalance = abalance + 212 where aid = 90882 LOG: statement: select abalance from accounts where aid = 90882 LOG: statement: update tellers set tbalance = tbalance + 212 where tid = 9 LOG: statement: update branches set bbalance = bbalance + 212 where bid = 1 LOG: statement: insert into history(tid,bid,aid,delta,mtime) values(9,1,90882,212,'now') LOG: statement: end (以後、略) postgresql.conf については:
[メモ] PostgreSQL を OS の終了時に終了させる (2004-07-26) #(この項、いまさらかな、とは思うけど。) Windows NT 系(Windows 2000、Windows XP も含む)であれば、 サービスに登録すれば、OS の終了時には PostgreSQL も正常に終了される。 以下に、ちゃんと正常終了していることを確認したときの操作とログを示す。 以下の例の前提条件
$ net start postmaster ★PostgreSQL サービスを起動する $ cat /var/log/postmaster.log ★状態を見る。 WARNING: dup(0) failed after 3195 successes: Bad file descriptor LOG: database system was shut down at 2004-07-26 00:00:00 LOG: checkpoint record is at 0/4323330 LOG: redo record is at 0/4323330; undo record is at 0/0; shutdown TRUE LOG: next transaction ID: 6032; next OID: 321673 LOG: database system is ready ★起動している。 ここでWindows を再起動し、ログを見ると正常に終了できていることがわかる。 $ cat /var/log/postmaster.log (略) LOG: database system is ready ★ここまでが起動時点のログ。 LOG: received fast shutdown request ★「高速シャットダウン」 LOG: shutting down LOG: database system is shut down ★ちゃんと終了している。[編集] [エラー] postgresql パッケージのバージョンアップ後にサービスを起動すると「サービスはエラーを報告しませんでした」エラーで起動できない (2004-06-24) #postgresql をサービスとして使っているときに、パッケージを入れ替えた後、 サービスを起動しようとすると、「サービスはエラーを報告しませんでした」エラーが出て起動できない。 このエラーのトラブルシューティングと解消手順について。
トラブルシューティングの例 (2004-08-28) #たとえば postgresql-7.4.3-1 をサービスに登録しているとき、 postmaster サービスを一旦停止し、postgresql-7.4.5-1 に入れ替えて、 再度 postmaster サービスを起動しようとすると、次のエラーがでて起動しない。 $ net start postmaster Cygwin PostgreSQL サービスを開始します. Cygwin PostgreSQL サービスを開始できませんでした。 サービスはエラーを報告しませんでした。 NET HELPMSG 3534 と入力すると、より詳しい説明が得られます。 エラー 3534 は「サービスはエラーを報告しませんでした」ということ。念のため、net helpmsg コマンドで確認する。 $ net helpmsg 3534 サービスはエラーを報告しませんでした。[編集] パッケージのチェック #パッケージが正常にインストールされているかどうか調べる。 最初に postgresql パッケージのみをチェックする。 (すぺてのパッケージをチェックすると、パッケージが多い場合時間がかかるので)。 問題なし。 $ cygcheck -c postgresql Cygwin Package Information Package Version Status postgresql 7.4.5-1 OK すべてのパッケージをチェックする。問題なし。 $ cygcheck -c | grep -v OK Cygwin Package Information Package Version Status (2004-08-29 'grep -vi OK' を 'grep -v OK' に修正。パッケージ名が 'book' を含むものを調べられなかったため) もし失敗していたら、setup.exe で 'reinstall' を選んで再インストールする。 [編集]イベントログを調べる #「サービスはエラーを報告しませんでした。」なので、 イベントログには「エラー」分類のログは残っていないだろう。 しかし、なんらかの情報があるかも知れないので確認してみる。 このときのイベントログの内容は: $ cscript "c:\windows\system32\eventquery.vbs" /l application /fi "source eq po stmaster" /r 5 Microsoft (R) Windows Script Host Version 5.6 Copyright (C) Microsoft Corporation 1996-2001. All rights reserved. ------------------------------------------------------------------------------ ホスト 'HOSTNAME' の 'application' ログのイベントを一覧表示しています。 ------------------------------------------------------------------------------ Type Event Date Time Source ComputerName ------------- ------ ------------------------ ----------------- -------------- 情報 0 2004/08/27 23:53:16 postmaster HOSTNAME ★ 情報 0 2004/08/27 23:53:15 postmaster HOSTNAME ★ 情報 0 2004/08/25 1:22:32 postmaster HOSTNAME 情報 0 2004/08/25 1:22:21 postmaster HOSTNAME 情報 0 2004/08/25 1:22:08 postmaster HOSTNAME (ここでは結果をファイルに残すのが容易なため、イベントビューアではなく、 Eventquery.vbs を使って表示している。 Eventquery.vbs は Windows XP に添付されており、 Windowsのヘルプに説明がある。→ Google 検索: Eventquery.vbs ) 一番新しい2件(★)が、今回のエラー発生時のログ。 この2件を詳細表示すると: $ cscript "c:\windows\system32\eventquery.vbs" /l application /fi "source eq po stmaster" /r 2 /fo list /v Microsoft (R) Windows Script Host Version 5.6 Copyright (C) Microsoft Corporation 1996-2001. All rights reserved. ------------------------------------------------------------------------------ ホスト 'HOSTNAME' の 'application' ログのイベントを一覧表示しています。 ------------------------------------------------------------------------------ Type: 情報 Event: 0 Date Time: 2004/08/27 23:53:16 Source: postmaster ComputerName: HOSTNAME Category: なし User: HOSTNAME\postgres Description: postmaster : PID 2072 : `postmaster' service stopped, exit status: 1 Type: 情報 Event: 0 Date Time: 2004/08/27 23:53:15 Source: postmaster ComputerName: HOSTNAME Category: なし User: HOSTNAME\postgres Description: postmaster : PID 2072 : `postmaster' service started ここで得られた情報は:
ここから:
PostgreSQL のログファイルを調べる。 #$ tail /var/log/postmaster.log LOG: statement: select abalance from accounts where aid = 92657 LOG: statement: update tellers set tbalance = tbalance + 406 where tid = 8 LOG: statement: update branches set bbalance = bbalance + 406 where bid = 1 LOG: statement: insert into history(tid,bid,aid,delta,mtime) values(8,1,92657,4 06,'now') LOG: statement: end LOG: received fast shutdown request LOG: shutting down LOG: database system is shut down FATAL: /usr/bin/postmaster: could not locate postgres executable ★ 最後の行(★)で、FATAL(致命的なエラー)が発生していることがわかる。 エラーメッセージによると /usr/bin/postmaster が実行できないとのこと。 ファイルの状態を調べてみる。 $ ls -al /usr/bin/postmaster lrwxrwxrwx 1 username Users 12 Aug 27 23:52 /usr/bin/postmaster -> p ostgres.exe $ ls -al /usr/bin/postgres.exe -rwxr-x---+ 1 username Users 2361344 Aug 26 21:40 /usr/bin/postgres.exe Other に読み取り・実行権限がない。よってエラーの原因は、postmaster をサービスで動作させるときに使っている postgres アカウントで実行できないため、と推測される。 そこで、次のようにして権限を追加してやる。(README にも書いてあるが) $ chmod o+rx /usr/bin/postgres.exe $ ls -al /usr/bin/postgres.exe -rwxr-xr-x+ 1 username Users 2361344 Aug 26 21:40 /usr/bin/postgres.exe この作業で、postmaster サービスが起動できるようになった。 $ net start postmaster Cygwin PostgreSQL サービスを開始します. Cygwin PostgreSQL サービスは正常に開始されました。[編集] [メモ] postgresql と最小限のパッケージ (2004-06-24) #Cygwin の setup.exe で「Select Packages」画面にて、postgresql-7.4.3-1 を 選んだときにインストールされるパッケージの一覧を以下に示す。 これらのパッケージの内訳は次の4つである。
$ cygcheck -cd Cygwin Package Information Package Version _update-info-dir 00227-1 ash 20040127-1 base-files 2.6-1 base-passwd 1.1-1 bash 2.05b-16 bzip2 1.0.2-5 crypt 1.1-1 cygrunsrv 1.0-1 cygwin 1.5.10-3 diffutils 2.8.7-1 editrights 1.01-1 fileutils 4.1-2 findutils 4.1.7-4 gawk 3.1.3-4 gdbm 1.8.3-7 grep 2.5-1 groff 1.18.1-2 gzip 1.3.5-1 less 381-1 libbz2_1 1.0.2-5 libgdbm 1.8.0-5 libgdbm-devel 1.8.3-7 libgdbm3 1.8.3-3 libgdbm4 1.8.3-7 libgettextpo0 0.12.1-3 libiconv2 1.9.1-3 libintl1 0.10.40-1 libintl2 0.12.1-3 libncurses5 5.2-1 libncurses6 5.2-8 libncurses7 5.3-4 libpcre 4.1-1 libpcre0 4.5-1 libreadline4 4.1-2 libreadline5 4.3-5 login 1.9-7 man 1.5k-3 mktemp 1.5-3 ncurses 5.3-4 openssl 0.9.7d-1 postgresql 7.4.3-1 readline 4.3-5 sed 4.0.9-2 sh-utils 2.0.15-4 tar 1.13.25-5 termcap 20021106-2 terminfo 5.3_20030726-1 texinfo 4.2-4 textutils 2.0.21-1 which 1.5-2 zlib 1.2.1-1[編集] 所要時間とディスク容量など (2004-08-21) #2004-08-21 に再度試して、所要時間とディスク容量を計測した。 環境
所要時間
setup.exe と、ring-server からダウンロードされたファイルの容量
c:\cygwin ディレクトリの使用量
[エラー] postmaster サービスを起動できず、/var/log/postmaster.log も更新されない (2004-06-18) #postmaster をサービスとして起動しようとして失敗し、しかも /var/log/postmaster.log が更新されない場合、postmaster.logのパーミッ ションが不適切であるかもしれない。 ようするに、postmaster プロセスを動作させているユーザ (postgres) から、 postmaster.log に書き込む権限がない、という可能性があること。 もし、そうであった場合は、ファイル /var/log/postmaster.log を削除する か、owner かパーミッションを修正して、postgres ユーザが書き込めるよう にすれば、解消できる。 [編集]postmaster.log のパーミッションについて #postmaster をサービスとして起動した場合、 postmaster.log の owner と パーミッション は通常、次のようになる。 $ ls -l /var/log/postmaster.log -rw-r--r-- 1 postgres なし 904 Jun 16 21:39 /var/log/postmaster.log 上記の意味は、ファイルの owner が postgres で、postgres ユーザにのみファイルの 書き込みが許可されている。(-rw-r--r--) ところが、postgres ユーザ以外のユーザで起動すると、たとえば 'username' で起動して いた場合、次のようになる。 $ ls -l /var/log/postmaster.log -rw-r--r-- 1 username なし 338 Jun 16 21:39 /var/log/postmaster.log 上記の場合、postgres ユーザーにて、このファイルへ書き込みを行おうとすると、エラーが発生する。 これを確かめるために、以下ではbash.exeを「別のユーザーとして実行」で postgresユーザで実行して、bash 上で次のコマンドを実行してみる。 $ echo test >> /var/log/postmaster.log bash: /var/log/postmaster.log: Permission denied すると、"Permission denied" なり、ファイルに書き込めないことが確かめられた。 このようなとき、postmaster サービスを起動しようとすると、postmaster が ログファイルに書き込めないため、エラーが発生し、起動できない。 $ cygrunsrv -S postmaster cygrunsrv: Error starting a service: QueryServiceStatus: Win32 error 1062: そのサービスを開始できませんでした。 $ net start postmaster Cygwin PostgreSQL サービスを開始します. Cygwin PostgreSQL サービスを開始できませんでした。 システム エラーが発生しました。 システム エラー 1067 が発生しました。 プロセスを途中で強制終了しました。 よって、この問題を解消するには、postgres ユーザ(で実行されるプロセス)が /var/log/postmaster.log に書き込めるように環境を整えてやればよい。 一番簡単なのは、postmaster.logを消去するなり、いったんリネームするなりしてから、再度postmasterを起動する。(2005-03-05) pgsql-cygwin MLでも同じ話題があった [編集] [メモ] ipc-daemon2 (cygipc) をサービスから削除する (2004-06-12) #postgresql-7.4.2-1 以後のパッケージでは、PostgreSQL の稼動に必要な IPC は、ipc-daemon2 (cygipc パッケージ) のものではなく、 cygserver (cygwin パッケージ) を使う。 よって、他に ipc-daemon2 を使っているパッケージが存在しないなら、 ipc-daemon2 をサービスから削除しても良い。 手順は Cygwin/cygipc#ipc-daemon2 (cygipc) をサービスから削除する を参照のこと。 [編集][エラー] postgresql-7.4.2-1 以後のバージョンで、initdb 時に Signal 12 が発生し、失敗する (2004-06-12) #postgresql-7.4.2-1 以後のパッケージでは、ipc-daemon2 (cygipc) ではなく cygserver を使う。 cygserver を使うプログラムを使うには、 cygserver がすでに起動されており、なおかつ、 環境変数 CYGWIN の値に文字列 "server" が含まれている必要がある。 以上のことは、postgresql-7.4.2.README に記載されている。 postgresql-7.4.2-1 の initdb の場合、cygserver が起動していない場合、あるいは cygserver が起動していても、環境変数 CYGWIN に "server" が含まれていない場合は、 以下のように 'Signal 12' が多量に表示され、実行も失敗する。 $ initdb --no-locale -D ~/postgresql/data The files belonging to this database system will be owned by user "username". This user must also own the server process. The database cluster will be initialized with locale C. creating directory /home/username/postgresql/data... ok creating directory /home/username/postgresql/data/base... ok creating directory /home/username/postgresql/data/global... ok creating directory /home/username/postgresql/data/pg_xlog... ok creating directory /home/username/postgresql/data/pg_clog... ok selecting default max_connections... Signal 12 Signal 12 Signal 12 Signal 12 Signal 12 Signal 12 10 selecting default shared_buffers... Signal 12 Signal 12 Signal 12 Signal 12 Signal 12 Signal 12 Signal 12 Signal 12 Signal 12 Signal 12 Signal 12 50 creating configuration files... ok creating template1 database in /home/username/postgresql/data/base/1... Signal 12 initdb: failed initdb: removing data directory "/home/username/postgresql/data"[編集] Signal 12 について (2004-06-18) #cygwin ML の Igor Pechtchanski - Re: PostgreSQL: initdb fails with v7.4.2 - postmaster fork error with v7 を見て、自分でも試してみた。 Signal の番号と意味の対応は kill -l で調べることができる。 (LPIC の問題集で見かけたような気もする…) $ kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGEMT 8) SIGFPE 9) SIGKILL 10) SIGBUS 11) SIGSEGV 12) SIGSYS 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGURG 17) SIGSTOP 18) SIGTSTP 19) SIGCONT 20) SIGCHLD 21) SIGTTIN 22) SIGTTOU 23) SIGIO 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGLOST 30) SIGUSR1 31) SIGUSR2 よって、12 は SIGSYS。 次に、ヘッダファイルの定義を見てみる。 $ grep SIGSYS /usr/include/sys/signal.h #define SIGSYS 12 /* bad argument to system call */ SIGSYS の意味は以下のページにもある。 以下の announce によると、「cygserver 関連のシステムコールを呼んだときに cygserver が動いていなかったとき、発生する」とだけ書いてある。でも、 CYGWIN=serverではないときも同様なのかもしれない。 Christopher Faylor - Updated: cygwin-1.5.6-1
[エラー] postgresql-7.4.2-1 以後のバージョンで、postmaster を起動すると、Bad system call と表示され、起動できない (2004-06-12) #postgresql-7.4.2-1 では、ipc-daemon2 の代わりに cygserver を使う。 cygrunsrv を使うプログラムを使うには、環境変数 CYGWIN の値に 文字列 "server" が 含まれている必要がある。 以上のことは、postgresql-7.4.2.README に記載されている。 で、postgresql-7.4.2-1 は環境変数 CYGWIN に "server" が含まれていない場合にどうういうエラーが起こるかというと。 以下のように 'Bad system call' になり、起動できない。 $ postmaster -D /home/username/postgresql/data Bad system call[編集] [メモ] postgresql パッケージが依存するパッケージ (2004-06-10) #postgresqlパッケージが依存しているパッケージを調べる方法について。 /usr/share/doc/Cygwin/postgresql-7.4.1.READMEにも記載されているが、 cygwinのsetup.exeの設定ファイル setup.ini にも依存パッケージが書いてある。 これはテキストエディタなどで確認できるが、次のようにして抜き出すこともできる。 $ ls release/ setup.ini* $ grep -A10 '@ postgresql' setup.ini | grep requires requires: ash crypt cygipc cygwin libncurses7 libreadline5 openssl zlib さらに、cygcheckでこれらのパッケージのバージョンも確かめてみた。 $ cygcheck -cd `grep -A10 '@ postgresql' setup.ini | grep requires | gawk '{$1="";print}'` Cygwin Package Information Package Version ash 20040127-1 crypt 1.1-1 cygipc 2.03-2 cygwin 1.5.9-1 libncurses7 5.3-4 libreadline5 4.3-5 openssl 0.9.7d-1 zlib 1.2.1-1 なお、この手順は、postgresqlパッケージに限らず、他のパッケージでも使える。 [編集]postgresql-7.4.3-1の依存パッケージ (2004-07-22) #PostgreSQL を使うだけなら、以下のパッケージだけでできるかもしれない。 $ grep -A10 '@ postgresql' setup.ini | grep requires requires: ash crypt cygrunsrv cygwin libncurses7 libreadline5 openssl zlib $ grep -A10 '@ ash' setup.ini | grep requires requires: cygwin $ grep -A10 '@ crypt' setup.ini | grep requires requires: cygwin $ grep -A10 '@ cygrunsrv' setup.ini | grep requires requires: cygwin $ grep -A10 '@ libncurses7' setup.ini | grep requires requires: cygwin terminfo $ grep -A10 '@ terminfo' setup.ini | grep requires $ grep -A10 '@ libreadline5' setup.ini | grep requires requires: cygwin libncurses7 $ grep -A10 '@ openssl' setup.ini | grep requires requires: cygwin $ grep -A10 '@ zlib' setup.ini | grep requires requires: cygwin $ grep -A10 '@ postgresql' setup.ini | grep requires | cut '-d ' -f2- ash crypt cygrunsrv cygwin libncurses7 libreadline5 openssl zlib $ cygcheck -cd postgresql ash crypt cygrunsrv libncurses7 terminfo libreadline5 openssl zilb cygwin Cygwin Package Information Package Version ash 20040127-1 crypt 1.1-1 cygrunsrv 1.0-1 cygwin 1.5.10-3 libncurses7 5.3-4 libreadline5 4.3-5 openssl 0.9.7d-1 postgresql 7.4.3-1 terminfo 5.3_20030726-1[編集] [メモ] postgres ユーザーでログオンする方法 (2004-03-20) #「サービス」へ登録した後の作業では、一部postgresユーザーで作業する必要がある。 Windowsからログオフすればユーザーを切り替えられるが、頻繁にユーザーを切り替えるのは面倒なので、いくつか回避手段を述べる。 [編集]runas.exe を使う (2004-07-24) #Windows XP Professional と Windows 2000 Professional にはこの機能がある。 実行例 *1: $ runas /user:postgres 'c:\cygwin\bin\bash.exe' postgres のパスワードを入力してください: c:\cygwin\bin\bash.exe をユーザー "HOSTNAME\postgres" として開始しています... runas コマンドの使い方は、「runas /?」 を実行すれば表示される。 Windows XP Professional の場合、使い方は 「スタート」→「ヘルプ」で「runas」を検索して 「Runas」項目を見ること。 Windows 2000 Professional の場合、同じく 「スタート」→「ヘルプ」で「runas」を検索して 「runas コマンド パラメータを使うショートカットを作成する」 →ページ末尾の「関連項目」→「Runas」。
別のユーザーとして実行 #Windows XP Professional と Windows 2000 Professional にはこの機能がある。 エクスプローラーなどで「c:\cygwin\bin\bash.exe」の上で右クリック→「別のユーザーとして実行(A)...」を使う(Windows 2000なら、Shift + 右クリック)。手順は「スタート」→「ヘルプ」で、「別のユーザーとして実行」を検索すると見つかる。 また、こちらも参考になる。 Windows TIPS -- TIPS:一時的にほかのユーザー権限でプログラムを実行する方法 (ショートカット・メニューを利用する方法) なお、「Cygwin Bash Shell」ショートカットはバッチファイルを指しているため、使えない。bash.exeのショートカットを作れば使える。 また、ショートカットのプロパティにも同じ機能(Windows2000では「別のユーザーとして実行」、Windows XPでは「別の資格情報で実行する」)があるので、頻繁に作業を行う場合は設定しておくとよい。 [編集]ユーザーの簡易切り替え #Windows XP Professionalには「ユーザーの簡易切り替え」がある。 手順は「スタート」→「ヘルプ」で「ユーザーの簡易切り替え」を検索すること。 [編集]telnetdやsshd を使う #telnetdやsshdの設定を行っているなら、telnetかsshでlocalhostにログインしてもいい。 [エラー] LANG=ja_JP.SJIS の場合、initdb が失敗 #環境変数LANGをja_JP.SJISに設定しているとinitdbに失敗し、以下のエラーが発生する。 $ initdb -D /var/postgresql/data : (略) creating template1 database in /var/postgresql/data/base/1... FATAL: invalid value for parameter "lc_messages": "ja_JP.SJIS" initdb: failed initdb: removing data directory "/var/postgresql/data" これを回避するには、localeを無視するために "--no-locale" オプションを指定すること。 ここらへんのことは ''/usr/share/doc/postgresql-X.X.X/README.mb.jp に書いてある。'' 以下引用。 [編集] [エラー] initdb や postmaster の実行で、FATAL: /usr/bin/postgres: could not locate postgres executable が発生する #ユーザ postgres にてinitdb を実行すると、次のエラーが発生することがある。 (正確には、Cygwinをインストールしたときのユーザとは別のユーザで実行したときに発生する) initializing pg_shadow... FATAL: /usr/bin/postgres: could not locate postgres executable initdb: failed これは、PostgreSQLの実行ファイルの権限が不適切であるため。 この場合、このエラーを回避するために、/usr/bin/postgres に権限(o+rx)を付加する。 $ ls -l /usr/bin/postgres -rwxr-x---+ 1 username Users 2397184 Nov 20 01:23 /usr/bin/postgres* $ chmod o+rx /usr/bin/postgres.exe $ ls -l /usr/bin/postgres -rwxr-xr-x+ 1 username Users 2397184 Nov 20 01:23 /usr/bin/postgres* また、このエラーが出たときはデータファイルが消去されないので、次のようにして手動で消去する。 $ rm -rf /var/postgresql/data/* また、サービスを起動したときに次のエラーが表示された場合で、 $ cygrunsrv -S postmaster cygrunsrv: Error starting a service: QueryServiceStatus: Win32 error 1062: そのサービスを開始できませんでした。 次のようにpostmaster.logに同じエラーが記録されているときも、 $ cat /var/log/postmaster.log FATAL: /usr/bin/postmaster: could not locate postgres executable 同じ対処で回避できる。 [編集][メモ] データベースクラスタ,データベース作成時にエンコーディングにEUC_JPを指定したときの注意 (2004-02-11) #データベースクラスタ作成(initdb)やデータベース作成(createdb)で、initdb -E EUC_JP の用にEUC_JPを指定したとき、文字化けする原因と対策について。 [編集]WindowsのコンソールはEUC_JPを表示できない #Cygwinに特有の原因ではなく、データベースクラスタの漢字コードと端末(psql)の漢字コードが異なっていることが原因。 Windows上でpsqlコマンドを使用するときは、「WindowsのコンソールはEUC_JPを表示できない」ため「文字化け」する。 そこで、psqlコマンドを起動した後、\encodingコマンドで以下のようにクライアント(=psql)のエンコーディングを変更する。: username-# \encoding ★現在のエンコーディングを確認 EUC_JP username-# \encoding SJIS ★エンコーディングを変更 username-# \encoding ★現在のエンコーディングを確認 SJIS ★試しにテーブルを作って、日本語の値を入れて、表示してみる。 username=# create table sample (id integer, name varchar); CREATE TABLE username=# insert into sample values (0, 'サンプル'); INSERT 17148 1 username=# select * from sample; id | name ----+---------- 0 | サンプル (1 row) \encoding SJIS については、/usr/share/doc/postgresql-X.X.X/''/usr/share/doc/postgresql-X.X.X/README.mb.jp の 「■フロントエンドとバックエンドの自動エンコーディング変換について」に書いてある。(2004-06-27) また、マニュアルでは次の個所に記載されている。 PostgreSQL 7.4.1 文書 - II. PostgreSQL クライアントアプリケーション - psql -- PostgreSQL 対話的ターミナル \encoding の設定は、~/.psqlrc にでも書いておけばよいかと。(2004-06-27) select version(); ★おまけ。pgsql-jp で最近話題になった。 \encoding SJIS ★設定して \encoding ★確認する 実行例。 $ psql Welcome to psql 7.4.3, the PostgreSQL interactive terminal. Type: \copyright for distribution terms \h for help with SQL commands \? for help on internal slash commands \g or terminate with semicolon to execute query \q to quit version ------------------------------------------------------------------------- PostgreSQL 7.4.3 on i686-pc-cygwin, compiled by GCC gcc (GCC) 3.3.1 (cygming special) (1 row) SJIS username=#[編集] 漢字の入力→変換→確定で文字化けする #これはPostgreSQLに限ったことではないが、漢字の入力→変換→確定で文字化けする場合、bashの設定を疑う。 (psqlをbashではなくWindowsの「コマンドプロンプト」で起動してみれば、 また、bashを起動し、psqlを起動する前に漢字を入力してみれば 切り分けられる) /.inputrcは次のようにするらしい。(手元では設定済みなので追試してない) set convert-meta off set input-meta on set output-meta on 手元ではbashは 2.05a-jp-1 (Cygwin+JE本の日本語化パッチ版) を使用している ので、さらに set kanji-code sjis も設定している。 [編集]psqlが使用するreadlineライブラリの影響 #readlineライブラリがいったん入力を処理するので、ここで文字化けする可能性もある。 (未経験だけど)。 psqlでは、 $ psql -? This is psql 7.4.1, the PostgreSQL interactive terminal. : (略) -n disable enhanced command line editing (readline) のように、-n オプションでreadlineの機能を停止できる。 なお、このオプションは、 http://www.postgresql.jp/document/pg74doc/html/app-psql.html には載っていない。このオプションがオフィシャル版のpsqlに載っているかどうかは不明。(ソースコードは調べてないし) Debian GNU/Linux 3.0 (woody) の postgresql パッケージ (7.2.1-2woody4) や RedHat 9.0 の postgresqlパッケージ (7.3.4-3.rh19) にも同じオプションがあったので、 オフィシャルなオプションだと考えられる。 [編集][メモ] postmaster への TCP/IP 接続のオプション #「サービスへの登録」では、postmasterプログラムにオプション -D と -i を指定している。
#--------------------------------------------------------------------------- # CONNECTIONS AND AUTHENTICATION #--------------------------------------------------------------------------- # - Connection Settings - tcpip_socket = true また、tcp/ip接続元を限定するには、/var/postgresql/data/pg_hba.confを設定する。デフォルトでは、localhostからのアクセスのみ許可されている。 [編集][メモ] データベースの権限 #デフォルトでは、postgresユーザ以外のユーザには、PostgreSQLの操作権限はない。 そこで、postgresの操作をいろいろ試す場合は、普段使うユーザにデータベース作成権限とユーザ作成権限を付けておくと便利である。 この作業は postgres ユーザで行う。これは、この時点では権限を持っているのは postgres ユーザだけであるため。 [postgres]$ createuser username Shall the new user be allowed to create databases? (y/n) y Shall the new user be allowed to create more new users? (y/n) y CREATE USER また、psqlコマンドでちょっと試すには、普段使うユーザ username と同名のDBを作成して置くと、psqlコマンドの起動時にユーザ名とデータベース名の指定を省略できる。 これは、psqlはデフォルトでユーザ名と同じ名前のデータベースを使うため。 $ createdb --encoding=EUC_JP -U username username CREATE DATABASE[編集] [メモ] cygrunsrv 0.98-1で追加された --neverexits オプション (2004-02-17) #cygrunsrv 0.98-1 では --neverexitsオプションが追加された。 このオプションの機能(Service should never exit by itself.)が ちょっと気になるので、そのうち調べたい。 |