PostgreSQLへの接続
今までMySQLで通してきたんだけど、PostgreSQLで行ってみようかというテスト。全く未経験でございます。
$this->_dsn = sprintf("%s:host=%s port=%s dbname=%s user=%s password=%s", DB_TYPE,DB_HOST,DB_PORT,DB_NAME,DB_USER,DB_PWD); $this->smarty->dbh = new PDO($this->_dsn,null,null,array(PDO::ATTR_PERSISTENT => false));
とかやって接続を試みるも失敗。調べてみると、
vi /var/lib/pgsql/data/postgresql.conf
とかで設定ファイルの
#tcpip_socket = false
を
#tcpip_socket = true
にしろ、というのをあちこちで見かけるんだけど、設定ファイルにそれらしき項目はなし。自分で記述してみても動かない。
更に見ていくと、ホスト名がlocalhostの時と指定なしの時で動作が異なるらしい。localhostだとTCP/IPで接続、指定なしだとソケット接続になるそうな。localhostにTCP/IPというのもどうかと思っていたら、やっぱり性能的にも落ちるし、ローカルならソケット接続一択らしい。
ということで、
$this->_dsn = sprintf("%s:dbname=%s user=%s password=%s",DB_TYPE,DB_NAME,DB_USER,DB_PWD); $this->smarty->dbh = new PDO($this->_dsn,null,null,array(PDO::ATTR_PERSISTENT => false));
で接続してみたら動いた。後から分かったことなんだけど、「#tcpip_socket」の指定が有効なのはPostgreSQL7.x系で、8.0以降は設定項目がなくなったんだそうな。yumで入れたバージョンが8.1.4だから、そりゃ動かんわな。
そんなこんなで、何とか接続してSELECTまで通った…