perlでさくらのサーバにデータベース接続をしていて、connectでエラーが出たなら

さくらのレンタルサーバClass::DBIを使っていてハマったDSN(Data Source Name)の記述方法。
ハマりがちなポイントなので対策法を書いときます。


Class::DBI - Simple Database Abstraction - metacpan.org
を見るとDSNは

('dbi:mysql:dbname', 'user', 'password')

の様に記述されているが、さくらの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');

とかになる。

とにかくポイントはさくらのサーバを使ってるときはDNSドメイン名も記述するってことですかね。