Freitag, 1. Januar 2010

mySQL socket

Ich will ein weiteres Programm installieren, welches (auf Perl-Basis) auf eine mySQL Datenbank zugreifen will.

Bei ./configure kommt
DBI connect('database=xx;host=localhost','xx',...) failed: Can't connect to local MySQL server through socket '/var/run/mysql/mysql.sock' (2) at /usr/lib/perl5/site_perl/5.10.0/xxx/Config.pm line 89

Wieder dieses Socket-Problem; wieder steht irgendwo /var/run statt /var/lib
Anmerkung: ich hatte mir /var/lib nicht ausgedacht!

Jetzt wo finde ich die Stelle? Mal "perl dbi mysql configure" suchen..
Hier lese ich, dass man den Pfad mit angeben kann, aber das kann's ja nicht sein.
DBI->connect('dbi:mysql:database=testdb;mysql_socket=/pfad/zu/mysql.sock', 'username', 'password');

Ich vermute ja, dass die opensuse 11.2 Installation da Mist gebaut hat.
Ich sollte erwägen, einen symlink auf die echte Datei zu setzen, dann wäre ein für alle Mal Ruhe. Aber das gehört in die Kategorie "quick & dirty"-Gefrickel, die ein System eher komplizierter und schwerer wartbar macht.

Hiermit wird auch nur der korrekte Pfad angezeigt:
ps ax|grep mysqld
26978 ?        S      0:00 /bin/sh /usr/bin/mysqld_safe --mysqld=mysqld --user=mysql --pid-file=/var/run/mysql/mysqld.pid --socket=/var/lib/mysql/mysql.sock --datadir=/var/lib/mysql
27096 ?        Sl     0:28 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --log-error=/var/lib/mysql/mysqld.log --pid-file=/var/run/mysql/mysqld.pid --socket=/var/lib/mysql/mysql.sock --port=3306

Ich sehe gerade: mit phpinfo() wird ausgegeben:
MYSQL_SOCKET     /var/run/mysql/mysql.sock
Hatte ich das nicht schonmal angeschaut? Egal, jetzt bin ich auf der Spur.


(So muss ich mich immer wieder beim Kampf mit Linux motivieren: "es ist doch spannend, die Rätsel zu lösen". Na ja.. ;-)

Also in die php.ini hatte ich es ja eben erst eingetragen.
Außerdem geht es dabei ja nur um PHP(?) und obiges Problem tritt mit Perl auf.
Logischer wäre allerdings, wenn sich PHP, Perl und alles andere die Informationen von mysql holen würden.

Jetzt habe ich doch die q&d "Lösung" gewählt, weil ich wirklich keinen Nerv mehr habe, jedem Mist hinterherzuforschen. Also symlink von /var/run/.. nach /var/lib/mysql/mysql.sock

Damit läuft wenigstens die Compilierung des Perl-Programms durch.

Der PHP-Teil des Programms (dessen Name ist unerheblich) gibt jetzt $variablen statt deren Inhalt aus.
Nach wiedermal viel Rumsucherei finde ich den Hinweis, doch mal in der php.ini nach der Option short_open_tag zu schauen. Und siehe da - das steht auf OFF. Keine Ahnung, ob das die Künschtler von PHP 5.3 stillschweigend eingeführt haben. Mich hat es jedenfalls viel Zeit gekostet.

Keine Kommentare:

Kommentar veröffentlichen