Seite 1 von 1

mysql update / kompatibilität und phpbb2

Verfasst: 09.07.2007 09:49
von zoc
Hallo zusammen.
Auf einer Forenseite mit der Version 2.0.21 kommt es seit dem Update von mysql 4 auf 5 zu Problemen mit einigen Seiten und Funktionen.

Durch die Suche hier, konnte man auch immer einzelne Hinweise finden.
Leider aber nicht in der Gesamtheit.

Es tauchten Probleme beim posten (reply) auf wo es zu sql-Fehlermeldungen kam. Das ist mittlerweile behoben.
Nun kommen noch Fehler bei der Mitgliederliste "Could not query users, Fehler 1064), Themen löschen geht nicht mehr, Freischalten von Usern und einiges andere.

Nun frage ich mal im allgemeinen.
Kann das sein ?? Kann das bestätigt werden, das es da Probleme gibt, mit der Schreibweise in SQL Statements ??
Könnte es z.B. sein, dass wenn das phpbb mit mysql 3.x Einstellung installiert wurde (statt mysql4/5), dass das die Ursache ist ??
Fehlt da die Kompatibilität ???
Also das trotz mysql3 Installationsweise, die 4er noch ging, aber die 5er Version jetzt nicht mehr ??
Und wenn dem so ist, was wäre zu tun ??

Für Tips wäre ich sehr dankbar ..

Achja, als kleines Beispiel, hier wegen der memberlist, die nicht mehr angezeigt wird:
Fehler:
Could not query users

DEBUG MODE

SQL Error : 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'user_active = 1 ORDER BY user_regdate ASC LIMIT 0, 50' at line 3

SELECT username, user_id, user_viewemail, user_posts, user_regdate, user_from, user_website, user_email, user_icq, user_aim, user_yim, user_msnm, user_avatar, user_avatar_type, user_allowavatar FROM forum_users WHERE user_id <> -1AND user_active = 1 ORDER BY user_regdate ASC LIMIT 0, 50

Line : 152
File : memberlist.php
Code in memberlist.php:
$sql = "SELECT username, user_id, user_viewemail, user_posts, user_regdate, user_from, user_website, user_email, user_icq, user_aim, user_yim, user_msnm, user_avatar, user_avatar_type, user_allowavatar
FROM " . USERS_TABLE . "
WHERE user_id <> " . ANONYMOUS . "
ORDER BY $order_by";
if( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not query users', '', __LINE__, __FILE__, $sql);
}

Verfasst: 09.07.2007 10:10
von PhilippK
Sorry, aber die Fehlermeldung passt nicht zu dem von dir geposteten Code...

Der Teil

Code: Alles auswählen

WHERE user_id <> -1AND user_active = 1
muss scheitern (und auch schon mit MySQL 3 oder 4), da ein Leerzeichen zwischen dem -1 und dem AND fehlt.
Der zweite Teil ist aber in deiner Abfrage garnicht enthalten.

Viele Grüße,

Philipp

Verfasst: 09.07.2007 10:35
von zoc
Danke Philip ... das ist mir auch schon aufgefallen, aber so steht es in der Version 2.0.21/22 drin ...
Leider steht mir das "Original" (da wo der Fehler auftaucht) Script nicht zur Verfügung, ist bin noch dabei das zu besorgen (ist nicht direkt mein Forum).

Mir gehts aber auch nicht nur darum, DIESEN Fehler zu beseitigen, sondern ich mache mir Sorgen um das GANZE.
Wie ich schon schrieb, sind es ja mehrere Dinge die nicht gehen ... und ich frage mich warum ... :(

Wie gesagt, könnte eine Vermutung sein, das das alte,ursprüngliche Forum als mysql3.x Version installiert wurde ... dann mehrfach upgedatet wurde und nun nicht mehr zur Version 5 von mysql passt ...

Was meinst DU ??

Verfasst: 09.07.2007 10:47
von SteveHH
Hallo ;)

Ich habe mal ein wenig gegoogelt, da ich das Thema recht interessant finde und mir auch schon Gedanken gemacht habe, was passieren mag, wenn mein Provider auf die glorreiche Idee kommt, auf php5 upzudaten (ist das so richtig geschrieben ?? :D )
Vielleicht kannst Du mit diesem Link was anfangen :)
Weiterhin habe ich in einem anderen Forum (www.macuser.de) bzgl. Mysql 5 folgendes gefunden:
Ich glaube der größte Unterschied (für den Administrator) ist, dass die Passwortverwaltung bei MySQL5 anders läuft und man deshalb entweder mit "-oldpasswords" konpiliert oder aber die Passwörter neu vergibt, denn man kann sich nicht mehr einloggen, wenn man es mit einem 4er Account bei einer 5er versucht, wo der Dump (einfach so) eingespielt wurde.

Ansonsten sind eigentlich nahezu alle alten Funktionen gleich geblieben, von daher macht es keinen allzu großen Unterschied für laufende Scripte, ob sie auf einer 4er oder 5er DB laufen. Wie gesagt, hauptsache die Passwörter werden beim Dump korrekt gesetzt.
Das ganze ist bei diesem Link zu finden.
Ich hoffe, das ich euch dabei (vielleicht ?) ein wenig helfen konnte :)

Greetz, Steve

Verfasst: 10.07.2007 00:48
von gn#36
Das phpbb2 sollte sowohl zu den PHP Versionen 4 und 5 als auch den mysql Versionen 4 und 5 kompatibel sein, es ist so geschrieben, dass es keine zu neuen PHP Funktionen oder Mysql Anweisungen verwendet.

Verfasst: 10.07.2007 07:38
von zoc
Danke ...
aber es gibt halt Probleme. Und es ist erst definitiv nach dem Wechsel von mysql ...

Nochmal konkret:
Was ist denn wenn man es tatsächlich mit "mysql3.x" Modus installiert ???
Was ist denn da anders, als wenn man es mit "mysql4/5" installiert ?

Gibts da keine Unterschiede ?

Verfasst: 10.07.2007 07:57
von Dr.Death
Hi,

prüfe mal nach, ob in deiner config.php ein Eintrag mit:

Code: Alles auswählen

$dbms = 'mysql';
existiert.

Wenn ja, ändere es mal auf:

Code: Alles auswählen

$dbms = 'mysql4';

Verfasst: 05.03.2008 14:11
von schock
Hallo,

ich habe dazu mal eine Verstaendnisfrage:

zoc ist von MySQL 4 auf 5 umgestiegen und Dr.Death raet ihm,
in config.php $dbms abzuaendern von "mysql" auf "mysql4".

Warum abaendern auf "mysql4" bzw. warum nicht auf "mysql5"?

Ich habe mit meinem Forum (phpbb 2.0.22) den Server gewechselt. Damit
verbunden war ein Wechsel von MySQL 4.0.15 auf 5.0.22.

Da habe ich gedacht, ich muss in config.php "$dbms=mysql5" schreiben.
Mache ich das, dann bekomme ich die Fehlermeldung "Fatal error: Class
'sql_db' not found in /var/www/vhosts/default/htdocs/lpi/phpBB2/includes/db.php
on line 60" und in der Tat, in db.php gibt es keinen mysql5 Fall. :-(

Schreibe ich in config.php "$dbms=mysql4", dann scheint das Forum
reibungslos zu funktionieren.

Bedeutet "$dbms=mysql4" also "MySQL Version 4 oder hoeher"?

Tschuess
Karl

Verfasst: 05.03.2008 16:41
von gn#36
Als phpBB2 entstanden ist gab es noch kein Mysql 5 und dementsprechend auch keine daran angepassten Funktionen. Mysql 5 ist aber abwärtskompatibel und daher lässt sich die gleiche Klasse verwenden wie für Mysql 4. In phpBB3 gibt es eine spezielle Datenbankklasse für Mysql 5 (die die Mysqli Funktionen verwendet), in phpBB2 aber noch nicht. Die Variable die geändert wurde gibt nur an, was für eine Klasse verwendet werden soll, d.h. die enthält den Klassennamen. Die Mysql 3 Klasse trägt eben den Namen mysql und die für Mysql 4/5 den Namen mysql4. mysql5 gibt es nicht, daher gibt es eine Fehlermeldung.

Verfasst: 05.03.2008 17:12
von schock
Alles klar. Danke fuer die schnelle Antwort. :-)
Karl