perlでさくらのサーバにデータベース接続をしていて、connectでエラーが出たなら
さくらのレンタルサーバでClass::DBIを使っていてハマったDSN(Data Source Name)の記述方法。
ハマりがちなポイントなので対策法を書いときます。
Class::DBI - Simple Database Abstraction - metacpan.org
を見るとDSNは
の様に記述されているが、さくらのDBサーバに対してこのように記述しても
Can't insert new Test: DBI connect('dbname','user',...) failed: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) at /home/username/perl/lib/perl5/site_perl/5.8.8//Ima/DBI.pm line 328
at test.cgi line 24
こんなエラーメッセージが出力されてしまうだけ。
さくらのレンタルサーバでは代わりにDSNを次のように記述する。
(さくらのDBサーバのドメイン名がmysqlxx.db.sakura.ne.jpの場合)
('dbi:mysql:dbname:mysqlxx.db.sakura.ne.jp', 'user', 'password');
とかになる。