Neuen MySQL Server in PHP bekannt geben (MySQL Client API)

mg7

New Member
Hallo alle miteinader,

ich habe auf meinem Rootserver (Debian 6 Linux - aktuelle Version + Plesk) PHP auf die neueste Version 5.3.6 geupdatet
(selbst kompiliert mit allen wichtigen Modulen).

Da Plesk noch die langsamere (alte) MySQL Version 5.0.51a verwendet, habe ich auch hier eine neue Version eingespielt per
Code:
apt-get install mysql-server mysql-client
# in der sources.list sind die dotdeb Lists eingetragen
Die neue MySQL Version läuft wie PHP problemlos und
Code:
mysql -V
gibt mir die richtige Versionsnummer aus: mysql Ver 14.14 Distrib 5.1.56.
Ebenso zeigt eine Abfrage der MySQL-Version mittels Shell-Login die Version 5.1.56.

Nun zum Problem:

PHP Info (php -i) zeigt als geladene MySQL Client Version nach wie vor das alte "Plesk Mysql" Version 5.0.51a an:

Code:
MySQL Support => enabled
Active Persistent Links => 0
Active Links => 0
Client API version => 5.0.51a
MYSQL_MODULE_TYPE => external
MYSQL_SOCKET => /var/run/mysqld/mysqld.sock
MYSQL_INCLUDE => -I/usr/include/mysql
MYSQL_LIBS => -L/usr/lib -lmysqlclient

Folgende MySQL Versionen sind geladen:
Code:
dpkg -l | grep mysql
Code:
ii  libdbd-mysql-perl                    4.016-1                              
ii  libmysql-ruby1.8                     2.8.2-1                              
i[B]i  libmysqlclient15-dev                 5.0.51a-24+lenny5                    
ii  libmysqlclient15off                  5.0.51a-24+lenny5                    
ii  libmysqlclient16                     5.1.56-0.dotdeb.0   [/B]                 
ii  libqt4-sql-mysql                     4:4.6.3-4                            
[B]ii  mysql-client                         5.1.56-0.dotdeb.0  [/B]                               
ii  mysql-common                         5.1.56-0.dotdeb.0                   
[B]ii  mysql-server                         5.1.56-0.dotdeb.0                    
rc  mysql-server-5.0                     5.0.51a-24+lenny4      [/B]              
[B]ii  php5-mysql                           5.3.5-0.dotdeb.0  [/B]
Die beiden MySQL Server 5.1.56 und 5.0.51a laufen also quasi parallel.

Gibt es eine Möglichkeit, den neuen MySQL-Server z.B. in der my.cnf (Änderung des Sockets/Ports o.ä.) bekannt zu machen, so dass er von PHP verwendet wird ohne Plesk neu zu installieren? Ich hatte auf einem anderen Server Plesk seinerzeit mit dem MySQL Update deinstalliert, musste es danach aber natürlich wieder händisch neu einspielen.

Sofern es eine andere Möglichkeit gibt, wäre mir diese natürlich lieber. Die Shell nutzt (wie oben erwähnt) ja ebenfalls die neue MySQL-Version.

Beste Grüße,
Matthias
 
Last edited by a moderator:
Die beiden MySQL Server 5.1.56 und 5.0.51a laufen also quasi parallel.
Das glaub ich so nicht. ;)
"Laufen" wird nur einer von beiden. Wahrscheinlich hast Du das 5.1er-Paket lediglich über die 5.0-Version installiert und damit den Paketmanager etwas durch einander gebracht.

Vom Client her (egal ob MySQL-Shell oder PHP) macht es fast keinen Unterschied ob es der 5.0 oder 5.1 ist. Die sind weitestgehend kompatibel und kommunizieren Beide auch mit beiden Server-Versionen.
Der Geschwindigkeitsgewinn des Versionssprungs findet auch im MySQL-Server statt und nicht im Client.

Es wäre übrigens Fatal, wenn die Clients 100%ig auf den Server abgestimmt wären. Denn ich glaube nicht, dass Du auch das Plesk-PHP (also das PHP des sw-servers) updaten kannst.

Warum Dein PHP allerdings noch die 5.0 anzeigt, weiß ich nicht. Hier solltest Du evtl. mal Dein Extensions-Verzeichnis checken.

huschi.
 
danton hat Recht, dotDeb linkt gegen Client-Lib 5.0.x

Beachte dass Client-Version nicht Server-Version ist und neurere Server mit aelteren Clients kompatibel (aber nicht in vollem Umfang umgedreht) sind.
Die MySQL-Version kannst du NACH VERBINDUNGSAUFBAU ueber die Lib oder mittels MySQL-Kommando rausfinden
 
Hallo alle miteinander,

vielen Dank für eure Antworten,

Das PHP von dotdeb ist meines Wissens gegen die ältere MySQL-Lib gelinkt.
Das PHP hatte ich selbst kompiliert per Debian-Package php-dev, also nicht von dotdeb geholt.

Das glaub ich so nicht. ;)
"Laufen" wird nur einer von beiden. Wahrscheinlich hast Du das 5.1er-Paket lediglich über die 5.0-Version installiert und damit den Paketmanager etwas durch einander gebracht.
Haha, ja das Gefühl habe ich auch gewissermaßen. ;-)

Vom Client her (egal ob MySQL-Shell oder PHP) macht es fast keinen Unterschied ob es der 5.0 oder 5.1 ist. Die sind weitestgehend kompatibel und kommunizieren Beide auch mit beiden Server-Versionen.
Der Geschwindigkeitsgewinn des Versionssprungs findet auch im MySQL-Server statt und nicht im Client.
Ja, der Geschwindigkeitsgewinn ist da.
Es ist halt etwas ärgerlich, wenn ich im PHPInfo noch das MySQL 5.0 stehen habe (da juckt es mir dann etwas in den Fingern :D).

... Warum Dein PHP allerdings noch die 5.0 anzeigt, weiß ich nicht. Hier solltest Du evtl. mal Dein Extensions-Verzeichnis checken.
Danke, werde ich gleich mal entsprechend durchforsten. :-)

... Beachte dass Client-Version nicht Server-Version ist und neurere Server mit aelteren Clients kompatibel (aber nicht in vollem Umfang umgedreht) sind.
Die MySQL-Version kannst du NACH VERBINDUNGSAUFBAU ueber die Lib oder mittels MySQL-Kommando rausfinden
SHOW VARIABLES LIKE 'version' zeigt die (neue) 5.1

Beste Grüße,
Matthias
 
Last edited by a moderator:
Wenn du dein PHP selbst kompiliert hast, dann solltest du vielleicht mal die Optionen anpassen, so daß nicht mehr externe MySQL-Libs verwendet werden, sondern der seit PHP 5.3 eigentlich standardmäßige native MySQL-Client, den PHP mitbringt.
 
Daran hatte ich auch schon gedacht. Leider unverändertes Ergebnis.

Den MySQL-Client habe ich in 2 Versionen:
Code:
ii  libmysqlclient15-dev                 5.0.51a-24+lenny5                    (alt)
ii  libmysqlclient15off                  5.0.51a-24+lenny5                    (alt)
ii  libmysqlclient16                     5.1.56-0.dotdeb.0   (// debian6)

locate mysqlclient
/usr/lib/libmysqlclient_r.so.16
/usr/lib/libmysqlclient_r.so.16.0.0
/usr/lib/libmysqlclient.so.16
/usr/lib/libmysqlclient.so.16.0.0

Weder (PHP Compile)
Code:
# (Pfad zum mysqlclient)
./configure --with-mysql=/usr/lib ...
noch
Code:
# (Pfad zum MysSQL)
./configure --with-mysql=/usr/bin ...
oder
Code:
# Standard
./configure --with-mysql ...
bringen eine Änderung.

Zuviel Zeit sollte man in eine solche Kleinigkeit aber nun auch nicht investieren. Funktioniert ja alles und Probleme gibt es keine.
Denke, ich gebe mich dann (erstmal) mit dem 5.0.51a Client zufrieden. ;-)

Vielen Dank nochmal für die Hilfe.

Beste Grüße,
Matthias
 
Last edited by a moderator:
Ich habe auf meinem Server zuhause Squeeze und die PHP-Pakete von Dotdeb drauf, in denen müßte der PHP Native-Driver aktiviert sein. Das aktuelle Paket hat damit die Version
Code:
mysqlnd 5.0.7-dev - 091210 - $Revision: 304625 $
Gibt es einen bestimmten Grund, warum du selbst kompiliert hast und nicht PHP von Dotdeb verwendest? MySQL von dort verwendest du ja auch.
 
Back
Top