カテゴリー
CentOS4.x PostgreSQL インストールメモ

centos4.8 に PostgreSQL8.4 をyumでインストール

PGDGレポジトリを追加する

純正レポジトリに postgresql を上書きされない様に無効化しておく。
/etc/yum.repos.d/CentOS-Base.repo を編集のうえ、[base]と[update]のそれぞれのセクションに、
exclude=postgresql*
を追記する。

カテゴリー
MySQL

MySQL で年月日等の日付別に集計する

いまさら月次集計や年毎の集計など

  • 集計をする際は、主にGROUP BYを多く用いる。
  • YEAR(), MONTH(), DAY(), DAYNAME(), EXTRACT()が便利。

WHERE で条件しぼるんじゃないらしい(ヲイ)

2010-05 2010-06 等で年月別の集計なら、

SELECT EXTRACT(YEAR_MONTH FROM `datetime`) as 'year_month' ,
SUM(`price`) as price
FROM `hoge_table`
GROUP BY EXTRACT(YEAR_MONTH FROM `datetime `);

とか。(参照ページの例文に間違い有り as が抜けているのと エイリアスとして year_month と言う文字列を指定する場合はクォートで囲まないとエラーになる)

year_month	price
200811	34259
200812	49258
200901	67447

結果はこんな感じになる。

参照:MySQLの知っていると便利な構文(その2)

カテゴリー
CentOS4.x PHP PostgreSQL

centos4.8のphp4.xをyumでphp5.1.6にアップデート

ケース1

すでにyumでphp4がインストール済みのcentos4.8にphp5.1.6をインストールする方法です。
*centosplusリポジトリの追加は行ってある前提です。

# yum --enablerepo=centosplus update php

としてもエラーで進まない。

Transaction Check Error: file /etc/my.cnf from install of mysql-libs-5.0.82sp1-1.el4_8 conflicts with file from package mysql-4.1.22-2.el4_8.3

php-pear-1.4.11 をインストールする必要があるようだ。

# yum --enablerepo=centosplus install php-pear-1.4.11

同時にphp5.1.6もアップデートされる。

参考:
http://wankopc.blog65.fc2.com/blog-entry-5.html

ケース2

web用として使っているサーバはケース1でインストール出来たのだけれど、DB用として使っているサーバはなぜかエラーが出る。

Error: Missing Dependency: libmysqlclient.so.15(libmysqlclient_15) is needed by package php-mysql

php-mysqlが問題でのエラーらしい。
https://perl.no-tubo.net/category/サーバ管理/guiツール/phpmyadmin/
この記事で扱ったphp-mbstringが原因か??

原因は分からず。

libmysqlclient.so.15 は MySQL-shared-VERSION.i386.rpm に含まれるものらしい。
DBサーバは Toritonn(MySQL5.067) をソースからインストールしたので別途インストールが必要。

http://sourceforge.jp/projects/tritonn/releases/?package_id=6742
から MySQL-shared-5.0.67-tritonn.1.0.12.i386.rpm をダウンロードしてインストールすれば libmysqlclient.so.15 もインストールされる。

# wget http://iij.dl.sourceforge.jp/tritonn/44615/MySQL-shared-5.0.87-tritonn.1.0.12a.i386.rpm
# rpm -ivh MySQL-shared-5.0.87-tritonn.1.0.12a.i386.rpm

その後に php5.1.6 をインストール

# yum --enablerepo=centosplus install php-pear-1.4.11

その後

postgreSQL は8.4 をインストールしたのだけれど、php から操作するのには php-pgsql が必要。
php-pgsql をインストールしようとしたら libpg.so.4 がないといわれインストール出来ない。

http://wdsdx.com/centos_php_pgsql
を読むとどうやら postgreSQL8.1系の postgresql-libs に含まれるらしい。

php5.2へアップグレードしないとか…な?

カテゴリー
MySQL

MySQLのINT等の整数型カラム(UNSIGNED)から減算する時に注意

MySQL4.xでは大丈夫だったけど、MySQL5.xに移行してから起こった出来事。

整数型カラムをUNSIGNEDして利用している時、負の数にならないのをいい事に0から減算して負の数の場合は0と自動で処理してくるものだと思っていた。(MySQL4.x時にはそのように処理されていた。)

本当はプログラム側で処理するべきなのかもしれないけれど、楽してそのようなスクリプトを書いていた。

で、先日MySQL5.xの環境に移行したらデータがおかしくなっていた。

とてつもなく大きな数字となっており???状態。

どうやら、UNSIGNEDしているカラムが0で、そこから1を引くと4294967295のような値になってしまうようだ。

これを回避するにはコマンドラインオプションで

--sql-mode=NO_UNSIGNED_SUBTRACTION

とするか、SQL発行時に

SET SQL_MODE='NO_UNSIGNED_SUBTRACTION';

とすると大丈夫のようだ。

参考: http://mlog.euqset.org/archives/ml@mysql.gr.jp/14844.html

カテゴリー
CentOS5.x MySQL postfix メールサーバ

CentOS5.3 PostfixをMySQL対応にする

2013-01-13追記
MySQL対応のPostfixはCentOS Plusリポジトリを使えばyumでupdate出来るみたい。こっちの方がいいね。

CentOS Plusリポジトリを有効にする

# vi /etc/yum.repos.d/CentOS-Base.repo

[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
#enabled=0
enabled=1  # ←有効にする
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5

yumでpostfixをupdate

# yum update postfix

...


===================================================================
 Package           Arch   Version               Repository    Size
===================================================================
Updating:
 postfix           i386   2:2.3.3-2.3.0.1.el5.centos.mysql_pgsql
                                                centosplus   3.7 M

...

mysql対応になっているかの確認。mysqlと出れば対応している。

# postconf -m|grep mysql
mysql

参考:postfixadmin + mysql + courier-imapによるバーチャルドメイン

以下古い記事


2010-12-04追記
どうやらCentOS5.5ではRPMが用意されている模様
64bit http://ftp.riken.jp/Linux/centos/5.5/centosplus/x86_64/RPMS/postfix-2.3.3-2.1.centos.mysql_pgsql.x86_64.rpm
32bit http://ftp.riken.jp/Linux/centos/5.5/centosplus/i386/RPMS/postfix-2.3.3-2.1.centos.mysql_pgsql.i386.rpm
あれ?前からあったのか??

yumでインストールされていたらアンインストール

yum erase postfix

ダウンロード

最新版の確認(/5.x/centosplus/SRPMS/より)

rpm -ivh http://ftp.riken.jp/Linux/centos/5.4/centosplus/SRPMS/postfix-2.3.3-2.1.centos.mysql_pgsql.src.rpm

コンパイル前の下準備

Postfix をMySQL対応にするためpostfix.specを編集。

cd /usr/src/redhat/SPECS/
vi postfix.spec
..
%define MYSQL 1 ←確認(0なら1に修正)
%define PGSQL 0 ←postgreSQLを使わないなら1から0に修正
..

コンパイル

srpmからrpmを作成する。

エラー: ビルド依存性の失敗:
pcre-devel は postfix-2.3.3-2.1.centos.mysql_pgsql.i386 に必要とされています

などのエラーが出たら
yum install pcre-devel
でインストール後に再度実行。

rpmbuild -bb postfix.spec

インストール

出来上がったRPMをインストールする。

cd /usr/src/redhat/RPMS/i386/
rpm -ivh postfix-2.3.3-2.1.centos.mysql_pgsql.i386.rpm

yumの自動アップデートから外す

yum update で postfix* なパッケージがアップデートされなくなる。

これをしないとyumの自動アップデート時にMySQL非対応に戻ってしまう。

vi /etc/yum.conf
exclude=postfix* ←最終業に追記

↑手動でもやりましたけど
Postfixをyumでアップデートしてしまった orz...