AD:
VagrantのUbuntuにPostgreSQLをインストールして、立ち上げようとすると下記のようなエラーがでたので、メモしておきます。
エラー内容
|
$ apt-get update $ apt-get install postgresql $ psql --version psql (PostgreSQL) 9.1.9 $ service postgresql start * Restarting PostgreSQL 9.1 database server * The PostgreSQL server failed to start. Please check the log output: 2013-08-05 22:19:14 UTC LOG: could not bind IPv4 socket: Cannot assign requested address 2013-08-05 22:19:14 UTC HINT: Is another postmaster already running on port 5432? If not, wait a few seconds and retry. 2013-08-05 22:19:14 UTC WARNING: could not create listen socket for "localhost" 2013-08-05 22:19:14 UTC FATAL: could not create any TCP/IP sockets |
解決方法
コネクション指定の問題なので、下記のように変更しました。
|
$ vi /etc/postgresql/9.1/main/postgresql.conf #listen_addresses = 'localhost'  ↓ listen_addresses = '*' |
Twitter: 0 | Facebook: 0 | Google Plus: 0 | Hatena: 0 | Pocket: 0 | Total: 0 | Feedly: 0
AD:
先月、とあるシステムをPostgreSQL 8.1.3→PostgreSQL 9.1.2にアップグレードしたら、既存システムが動かなくなった。
よく調べてみるとSQLのJoin部分のKeyの型がcharacterだと接続エラーになっていました。
解決方法
で、単純に下記のSQLで型を変更しようと思ったのですが、場所によっては下記のSQLでは型変更ができないところがありました。
|
ALTER TABLE toiawase ALTER COLUMN kokyaku_id TYPE integer USING kokyaku_id::integer; |
解決方法(IndexやViewがある場合)
また調べてみると変更しようとしたKeyがIndexやViewの中でも使用されていることが判明
なので、変更対象のKeyが使用されているIndexやViewをいったん削除して、上記SQLを再度実行して、その後に、削除したIndexやViewを復元させて、
事無きを得ました。ちゃんちゃん
|
#Indexの削除 DROP INDEX name toiawase_Index; #型の変更 ALTER TABLE toiawase ALTER COLUMN kokyaku_id TYPE integer USING kokyaku_id::integer; #Indexの作成 CREATE INDEX toiawase_Index ON toiawase USING btree (kokyaku_id); |
Twitter: 0 | Facebook: 0 | Google Plus: 0 | Hatena: 0 | Pocket: 0 | Total: 0 | Feedly: 0
AD:
基本設定部分
[php]
$ vi /var/lib/pgsql/9.1/data/postgresql.conf
#listen_addresses = ‘localhost’
↓
listen_addresses = ‘*’
#port = 5432
↓
port = 5432
ログの名前
log_filename = ‘postgresql-%Y-%m-%d_%H%M.log’
ログのローテーション
log_rotation_age = 1d
ログのサイズ
log_rotation_size = 2MB
同名のファイルが存在する時は上書きする。ローテーション用。
log_truncate_on_rotation = on
ログのレベル
log_min_error_statement = error
[/php]
ログの細かい内容はこちらを参照してください。
http://lets.postgresql.jp/documents/technical/log_setting
セキュリティ設定部分
[php]
$ vi /var/lib/pgsql/9.1/data/pg_hba.conf
ローカル接続の許可
local all all peer
外部からの接続の設定
host all all 123.123.123.123/32(接続元のIP) password
[/php]
Twitter:
Warning: Undefined array key "Twitter" in /home/sazaeau/mizoshiri.com/public_html/blog.mizoshiri.com/wp-content/plugins/sns-count-cache/sns-count-cache.php on line 2897
0 | Facebook: 0 | Google Plus:
Warning: Undefined array key "Google+" in /home/sazaeau/mizoshiri.com/public_html/blog.mizoshiri.com/wp-content/plugins/sns-count-cache/sns-count-cache.php on line 2897
0 | Hatena: 0 | Pocket: 0 | Total: 0 | Feedly: 0
AD:
Postgresのサイトからrpmを取得
http://yum.postgresql.org/reporpms/
インストール
[php]
$ wget http://yum.postgresql.org/9.1/redhat/rhel-5-i386/pgdg-centos91-9.1-4.noarch.rpm
$ rpm -ivh pgdg-centos91-9.1-4.noarch.rpm
$ vi /etc/yum.repos.d/CentOS-Base.repo
[base]の中に下記のコメントを追加
exclude=postgresql*
[update]の中に下記のコメントを追加
exclude=postgresql*
$ yum -y install postgresql-server
Installed:
postgresql91-server.i386 0:9.1.2-1PGDG.rhel5
Dependency Installed:
postgresql91.i386 0:9.1.2-1PGDG.rhel5 postgresql91-libs.i386 0:9.1.2-1PGDG.rhel5
[/php]
初期設定
[php]
$ chkconfig postgresql-9.1 on
DBの初期化
$ service postgresql-9.1 initdb
データベースを初期化中: mkdir: ディレクトリ `/var/lib/pgsql/9.1/data/pg_log’ を作成できません: ファイルが存在します
$ rm -rf /var/lib/pgsql/9.1/data/pg_log/
$ service postgresql-9.1 initdb
データベースを初期化中: [ OK ]
$ service postgresql-9.1.2 start
postgresql-9.1 サービスを開始中: [ OK ]
$ su – postgres
$ psql -V
psql (PostgreSQL) 9.1.2
[/php]
設定関連
[php]
基本関係
$ vi /var/lib/pgsql/9.1/data/postgresql.conf
セキュリティ関係
$ vi /var/lib/pgsql/9.1/data/pg_hba.conf
[/php]
Twitter:
Warning: Undefined array key "Twitter" in /home/sazaeau/mizoshiri.com/public_html/blog.mizoshiri.com/wp-content/plugins/sns-count-cache/sns-count-cache.php on line 2897
0 | Facebook: 0 | Google Plus:
Warning: Undefined array key "Google+" in /home/sazaeau/mizoshiri.com/public_html/blog.mizoshiri.com/wp-content/plugins/sns-count-cache/sns-count-cache.php on line 2897
0 | Hatena: 0 | Pocket: 0 | Total: 0 | Feedly: 0
AD:
pg_dumpは
|
pg_dump database_name > database_name.sql |
を実行すればできると、あるが実際はいろいろと気をつけないことが、たくさんあるのでそのメモ
その一、ユーザの準備
postgresでDBを作成しているなら、postgresユーザがいります。
|
useradd -d /home/postgres/ postgres |
このときに、ホームディレクトリーも作っておきます。
その二、ファイルの準備
先ほど上のつくったホームディレクトリーの中にdatabase_name.sqlのファイルを作っておきます。
その三、bushが引けてない場合があるのでlocateでpg_dumpを調べてひいいておきましょう。
その四、いざ実行
|
[postgres@www postgres]$ pg_dump database_name.sql > database_name.sql |
Twitter:
Warning: Undefined array key "Twitter" in /home/sazaeau/mizoshiri.com/public_html/blog.mizoshiri.com/wp-content/plugins/sns-count-cache/sns-count-cache.php on line 2897
0 | Facebook: 0 | Google Plus:
Warning: Undefined array key "Google+" in /home/sazaeau/mizoshiri.com/public_html/blog.mizoshiri.com/wp-content/plugins/sns-count-cache/sns-count-cache.php on line 2897
0 | Hatena: 2 | Pocket: 0 | Total: 2 | Feedly: 0