2017-01-01から1年間の記事一覧
Ubuntu 16.04 がインストールされている私の職場PCがハードディスクの故障で動かなくなり、修復のためにいろいろやっている過程で、 ブート時のメニューで「Ubuntu」を選んでも起動しない。 「Advanced options for Ubuntu」を選んでから「upstart」という文…
PostgreSQL を用いた Rails アプリケーション開発で キャッシュした計画は結果型を変更してはなりません あるいは cached plan must not change result type というエラーメッセージに遭遇することがある。 解決法は簡単で、Rails サーバーを再起動すればよ…
問題 Rails あるいは Sinatra を Phusion Passenger で動かしている状況で、permission denied により ruby を実行できない。 解決策 (1) Rails なら config/environment.rb、Sinatra なら config.ru の持ち主が ruby を実行できるユーザーかどうかを確認し…
問題 次のようなRailsのアクションにより files/example.pdf の中身をユーザーにダウンロードさせたい。 class FilesController < ApplicationController def show filename = 'example.pdf' path = Rails.root.join('files', filename) send_file(path, typ…
問題 最近、OmniAuthを使ってGithub経由でのユーザー認証機能を既存のRailsアプリに組み込んだ。 その際、開発環境ではすんなり動いたのだが、本番環境にデプロイすると redirect_uri_mismatch エラーが出てしまう。 解決法 config/initializers/omniauth.rb…
先週末に WEB+DB PRESS Vol.99の「良いコード」を本気でコードレビューしてみた という興味深いブログ記事が書かれました。 はてなブックマークでのコメントを見ると、多くの人がブログ記事の内容に賛同しているようですが、「P12: 何もしないelseは必要か?…
PostgreSQL の「ポイントインタイムリカバリ(PITR)」について調べていて、ドキュメントの中に気になる記述を見つけた。 もし以前のある時点まで復旧させたい場合(例えば、経験不足のデータベース管理者が主トランザクションテーブルを消去した直前)、rec…
PostgreSQL 9.5 のサーバーがデフォルトの 5432 番ポートで動いている状態で、PostgreSQL 9.6 のサーバーをインストールするとどうなるか。 $ apt-get install postgresql-9.6 結果。PostgreSQL 9.6 の main クラスタが 5433 番ポートで立ち上がる。 この状…
私の知る限りにおいて、PostgreSQL のコンソールであるデータベースの CREATE DATABASE 文を知る方法はない。すなわち、MySQL コンソールの SHOW CREATE DATABASE コマンドに対応するコマンドはない。 しかし、代わりに次のようなコマンドを実行すればよい:…
前提条件 ホスト palau の 50001 番ポートで PostgreSQL サーバが稼働している。 このサーバの非特権ユーザー alice がデータベース db0 と db1 を所有している。 alice のパスワードは bravo である。 db0 には複数のテーブルがある。ただし、スキーマは pu…
この記事は、PostgreSQL 9.6: レプリケーションの設定(非同期)の続きです。 同期レプリケーションモードへの移行 postgresql.conf (マスター側)の書き換え # sudo vim /etc/postgresql/9.6/cluster1/postgresql.conf synchronous_standby_names = 'clust…
要点 MySQL 用語の「マスター」と「スレーブ」を、PostgreSQL 用語では「マスター」と「スタンバイ(standby)」と呼ぶ。 レプリケーションには「非同期(async)」と「同期(sync)」の区別がある。可用性を上げたいなら「同期」を選択する。 pg_basebackup…
PostgreSQL のクラスタ(インスタンス)管理は、MySQL の mysql_multi よりも簡単。 以下、Ubuntu 16.04 で行ったトライアルの結果。 クラスタの作成 $ sudo pg_createcluster --port=54321 9.6 abc $ sudo pg_createcluster --port=54322 9.6 xyz sudo -u p…