Warning: session_start(): open(/home/var/php/4/s/sess_4sc6tnsbo39t7hvajd3m4gfuj6, O_RDWR) failed: No such file or directory (2) in /home/users/web07/2/1/0219112/phyokin/devlog/controllers/controller.php on line 15

Warning: session_start(): Failed to read session data: files (path: 2;/home/var/php) in /home/users/web07/2/1/0219112/phyokin/devlog/controllers/controller.php on line 15
devlog
MW211 EXIT

devlog
PGSQL/インストールでランタイムエラー
2019年01月29日
PostgreSQLをWindows10にインストールしようとして
インストーラ(postgresql-9.6.11-1-windows-x64.exe)を起動したら
以下のエラーが出て進めなくなった。
  ┌────────────────────────────────────┐
  │Error                                                                   │
  ├────────────────────────────────────┤
  │There has been an error.                                                │
  │An error occured executing the Microsoft VC++ runtime installer.        │
  └────────────────────────────────────┘

これは、コマンドプロンプトを管理者権限で開き、インストーラにある場所へ移動し
「--install_runtimes 0」オプションとともに実行すれば回避できる。
┌──────────────────────────────────────┐
│> postgresql-9.6.11-1-windows-x64.exe --install_runtimes 0                  │
└──────────────────────────────────────┘
ランタイムはインストール済みだから(それに絡むいざこざは)回避すればよい
という理解でいいのかなぁ。
分類:PostgreSQL
PGSQL/pgAdmin4の日本語化
2019年01月28日
メニューバー「File(ファイル)」より「Preferences(設定)」を選択。
ツリー上から「User language(ユーザ言語)」を選択する。
┌──────────────┐
│Miscellaneous(その他)       │
│└User language(ユーザ言語) │
└──────────────┘
「User language(ユーザ言語)」を「English」から「Japanese(日本語)」に変更。

設定は以上。

画面の反映は、再起動(一旦切断して再接続)か
メニューバー「File(ファイル)」より「Reset Layout(レイアウトを初期化)」を実行。

昔は不安定だったけど、今は安定してるっぽい。
分類:PostgreSQL
PostgreSQL/generate_seriesの別名
2018年09月18日
generate_series()で別名を定義する場合には、
表と列の両方を同時に定義してやればよい。
┌──────────────────────────────────────┐
│SELECT "表"."列"                                                            │
│    FROM "generate_series"(1, 3) AS "表"("列");                             │
└──────────────────────────────────────┘

もしも、表だけ別名を定義してしまうと列名も表と同名となってしまう。
┌──────────────────────────────────────┐
│SELECT "表"."表"                                                            │
│    FROM "generate_series"(1, 3) AS "表";                                   │
└──────────────────────────────────────┘
なので、「"表"."generate_series"」とかはエラーとなる。

クロス結合する場合には、以下のような感じでできる。
┌──────────────────────────────────────┐
│SELECT "表A"."列A",                                                         │
│       "表B"."列B"                                                          │
│    FROM "generate_series"(1, 3) AS "表A"("列A")                            │
│        CROSS JOIN  "generate_series"(1, 2) AS "表B"("列B")                 │
│    ORDER BY  "表A"."列A" ASC,                                              │
│              "表B"."列B" ASC                                               │
└──────────────────────────────────────┘
分類:PostgreSQL
PostgreSQL/pgAdmin4日本語化
2018年05月23日
メニューバーの「File」より「Preferences」を選択する。

「Preferences」画面が起動するので、
画面左のツリーメニューより「User language」を選択し、
画面右に「User language」が表示されたら、
プルダウンメニューより「Japanese」を選択して「OK」押下。

「File」の「Reset Layout」を実行し画面に反映させれば完了。
分類:PostgreSQL
PostgreSQL/大量のINSERT
2018年05月22日
plain(平文)形式でバックアップしたところ、大量のINSERT文を取得してしまった。
これを別DBへ移行するため投入したいのだが。。。

やり方は以下の三つ。
┌─┬────────────────────────────────────┐
│①│インサート                                                              │
│  │「INSERT INTO "表"(列) VALUES (値);」を何回も実行する                   │
│  │数千件レベルまで                                                        │
├─┼────────────────────────────────────┤
│②│バルクインサート                                                        │
│  │「INSERT INTO "表"(列) VALUES (値),(値),…;」                           │
│  │数十万件レベルまで                                                      │
├─┼────────────────────────────────────┤
│③│コピー                                                                  │
│  │「COPY "表" FROM '入力.csv' WITH CSV;」                                 │
│  │数百万件レベルでもいける                                                │
└─┴────────────────────────────────────┘

①は取得したINSERT文をそのままコピペして実行するパターン。
最も簡単で、件数が少ないならこれがお勧め。

②はINSERT文を編集する必要あり。
前の行の末尾の「;」から次の行の「VALUES」までを「,」に置換してやればよい。
これもコピペでいける。
数十万件レベルならこれがお勧め。(①との差は歴然)

極端に件数が多いのであれば、INSERT文はあきらめる
③のパターン。
(というか、INSERTでデータ取得したこと自体がある意味おかしな感じになってしまう)
INSERT文の前後を上手に置換して、CSV形式にする。
その上で、COPY文で取り込む。
手続きがめんどくさいが、それだけの件数ということなので致し方なし。
分類:PostgreSQL
PostgreSQL/pgAdmin4クエリ初期化エラー
2018年05月21日
テーブルの右クリックメニューから「クエリツール...」を選んで
クエリツールを起動すると以下のエラーが発生する。
┌───────────────────┐
│Alertifyjs                            │
├───────────────────┤
│Query Tool Initialize Error           │
└───────────────────┘
日本語に翻訳した場合は以下。
┌───────────────────┐
│Alertifyjs                            │
├───────────────────┤
│クエリツール初期化エラー              │
└───────────────────┘

対応方法としては以下の二つ
(a) 本メニューは使わない。
    メニューバーの「ツール」→「クエリツール」を実行すればよい。
(b) 同右クリックメニューから「Count Rows」を実行してから、
    本「クエリツール...」を実行する
分類:PostgreSQL
PostgreSQL/pgAdmin4起動エラー
2018年05月19日
pgAdmin4を起動したら以下のエラーが出た。
┌───────────────────────┐
│Fatal error                                   │
├───────────────────────┤
│The application server could not be contacted │
└───────────────────────┘
「C:\Users\(ユーザ名)\AppData\Roaming\pgAdmin」の中を空にしたら直った。

「pgAdmin」の中の「pgadmin4.db」が主要因の模様(これだけの削除でもOK)。

但し、「pgadmin4.db」を削除すると、パスワードの記録や日本語化設定は
クリアされてしまう。(再設定が必要)
分類:PostgreSQL
PostgreSQL/pgAdminでDBを別名で複写
2017年10月13日
テスト用にDBを別名でまるごと複写する方法。
(1) 複写元でバックアップを実行(バックアップファイルを入手)
    Customあたりの圧縮形式でよいだろう
(2) 複写先DBを作成
(3) 複写先DBでリストアを実行(上記バックアップファイルを指定)
これだけ

バックアップファイルにはDB内の情報しかない(DBの情報はない)ので
指定されたDB配下にDB配下の情報をリストアする感じとなる
分類:PostgreSQL
pgAdminのログ
2017年09月11日
以下で設定可能
ファイル>オプション>ロギング設定(タブ)>ログファイル(欄)
分類:PostgreSQL
PostgreSQL/トランザクション中のエラーメッセージ
2017年01月20日
トランザクション中で何らかの例外が発生すると、
後続のSQL文が軒並みエラー(中止)となってロールバックへ突き進む。

この場合、後続のSQL文ごとに以下のようなメッセージが出力される。
┌──────────────────────────────────────┐
│current transaction is aborted,                                             │
│commands ignored until end of transaction block                             │
├──────────────────────────────────────┤
│現在のトランザクションは中止され、                                          │
│トランザクションブロックの終了までコマンドは無視されます                    │
└──────────────────────────────────────┘
上記のようにGoogle翻訳すると意味はわかり、
正常なメッセージであることが認識できるのだが
勘違いして「end of transaction block」(トランザクションの末尾)が
「ignored」(見当たらない←明らかな誤訳)と誤ってとらえてしまい
トランザクション処理の構造がおかしいとあわてないように!(←実体験)
分類:PostgreSQL
前へ 1 2 3 4 5 6 7 8 9 10 11 次へ