dbi:mysql socket Problem

dbi:mysql socket Problem

am 24.10.2006 15:00:53 von Wolf Grossi

Hi Leute,

auf einer Linux 2.6.5,
perl-5.8.8
mod_perl/2.0.2
DBD::mysql 3.0008

tritt folgendes Problem auf:

unter Apache2 stirb ein Script beim Statment

my $dbh = DBI->connect("dbi:mysql:testdb", "tst", "tst111";

mit dem Fehler

DBI connect('testdb','tst',...) failed: Can't connect to local MySQL
server through socket '/tmp/mysql.sock'


In /etc/my.cnf ist für client und server /var/lib/mysql/mysql.sock
angegeben.


Wenn ich hingegen ein Script mit dem obigen connect in der shell
ausführe, klapps bestens.

Was mache ich falsch?

Danke für's Lesen und Tipps
Wiolf

Re: dbi:mysql socket Problem

am 25.10.2006 09:11:03 von Otto Lang

Wolf Grossi wrote:
> Hi Leute,

Hi,

> unter Apache2 stirb ein Script beim Statment

Das Script stirbt, nicht der Apache;)

> my $dbh = DBI->connect("dbi:mysql:testdb", "tst", "tst111";
>
> mit dem Fehler
>
> DBI connect('testdb','tst',...) failed: Can't connect to local MySQL
> server through socket '/tmp/mysql.sock'
>
> In /etc/my.cnf ist für client und server /var/lib/mysql/mysql.sock
> angegeben.

In dem Fall ist es klar, dass das Script ein Problem hat. Der Socket
liegt an einem falschen Ort.

> Wenn ich hingegen ein Script mit dem obigen connect in der shell
> ausführe, klapps bestens.

Das verstehe ich im Moment nicht. Aber du kannst den Pfad für den Socket
beim Connect mit angeben:

DBI->connect('dbi:mysql:database=testdb;mysql_socket=/pfad/z u/mysql.sock',
'username', 'password');

> Was mache ich falsch?
>
> Danke für's Lesen und Tipps
> Wiolf

HTH
../otto
--
/"\ ASCII ribbon | http://www.wean.at
\ / campaign against | http://www.lang-kritz.at
x HTML postings | http://www.diepranger.at
/ \ & email |

Re: dbi:mysql socket Problem

am 25.10.2006 10:15:45 von Wolf Grossi

Otto Lang wrote:
[snip]
> In dem Fall ist es klar, dass das Script ein Problem hat. Der Socket
> liegt an einem falschen Ort.
>
>> Wenn ich hingegen ein Script mit dem obigen connect in der shell
>> ausführe, klapps bestens.
>
> Das verstehe ich im Moment nicht. Aber du kannst den Pfad für den Socket
> beim Connect mit angeben:
>
> DBI->connect('dbi:mysql:database=testdb;mysql_socket=/pfad/z u/mysql.sock',
> 'username', 'password');
>

Ja, hab ich auch schon erwogen.
Z.Zt. hab ich's mit einen sym-link gelöst, geht auch
*aber*
woher aber nimmt perl den pfad? Sollte doch aus /etc/my.cnf (-rw-r--r--)
entnommen werden.


Hints?
Wolf

Re: dbi:mysql socket Problem

am 25.10.2006 11:48:43 von Otto Lang

Wolf Grossi wrote:
> [ snip ]
> Z.Zt. hab ich's mit einen sym-link gelöst, geht auch

Das geht natürlich auch, klar.

> *aber*
> woher aber nimmt perl den pfad? Sollte doch aus /etc/my.cnf
> (-rw-r--r--) entnommen werden.

In der Doku steht dazu:

| Usually there's no need for this option, unless you are using another
| location for the socket than that built into the client.

Ich würde daher annehmen, dass das Modul gar nicht in der my.cnf
nachsieht sondern einfach mit dem anderen (falschen) Pfad erzeugt wurde.

Hast du DBI/DBD und/oder MySQL selbst installiert oder alles über den
Paketmanager deiner Distribution gemacht?

> Hints?
> Wolf

../otto
--
/"\ ASCII ribbon | http://www.wean.at
\ / campaign against | http://www.lang-kritz.at
x HTML postings | http://www.diepranger.at
/ \ & email |