Seite 1 von 1

Fehlermeldung weiß aber nicht wo er liegt

Verfasst: 21.04.2009 18:56
von AK47
Hallo

Habe folgende Fehlermeldung:

Code: Alles auswählen

Allgemeiner Fehler
SQL ERROR [ mysqli ]

Unknown column 'u.user_id' in 'on clause' [1054]

SQL

SELECT u.user_id, v.id as vid FROM phpbb_users u , phpbb_user_group ug LEFT JOIN phpbb_garage_vehicles v ON ( v.user_id = u.user_id AND v.main_vehicle = 1 ) WHERE u.user_type IN (0, 3) AND ug.user_pending = 0 AND u.user_id = ug.user_id AND ug.group_id = 5 ORDER BY ug.group_leader DESC, u.user_regdate ASC LIMIT 25

BACKTRACE

FILE: includes/db/mysqli.php
LINE: 163
CALL: dbal->sql_error()

FILE: includes/db/mysqli.php
LINE: 205
CALL: dbal_mysqli->sql_query()

FILE: includes/db/dbal.php
LINE: 170
CALL: dbal_mysqli->_sql_query_limit()

FILE: memberlist.php
LINE: 1439
CALL: dbal->sql_query_limit()
Die memberlist.php ist in Ordnung
der Fehler kommt wenn man die Benutzergruppen (unten im Forum unter den usernamen) aufrufen will.

Welche Datei könnte das noch sein vermute mal nicht die memberlist sondern ne Datei von den groups.

Bitte um Hilfe

btw: gibt es im phpbb3 auch ne art datenbankwartung?

Re: Fehlermeldung weiß aber nicht wo er liegt

Verfasst: 21.04.2009 20:00
von Dr.Death
Hallo,

auch dafür ist die memberlist.php zuständig.

Der Fehler kommt wahrscheinlich durch einen fehlerhaften MOD Ein/Ausbau ( Garage MOD ).

Oder Du suchst mal die SQL Abfrage in der memberlist.php und setzt 2 runde Klammern um die beiden Tabellen aus der FROM Anweisung.


Beispiel:
Aus:
SELECT u.user_id, v.id as vid FROM phpbb_users u , phpbb_user_group ug LEFT JOIN phpbb_garage_vehicles ...
mach:
SELECT u.user_id, v.id as vid FROM (phpbb_users u , phpbb_user_group ug) LEFT JOIN phpbb_garage_vehicles ...

Re: Fehlermeldung weiß aber nicht wo er liegt

Verfasst: 21.04.2009 20:16
von AK47
habe da folgendes

Code: Alles auswählen

// Get us some users :D
		$sql = "SELECT u.user_id, v.id as vid
			FROM " . USERS_TABLE . " u
				$sql_from
			LEFT JOIN " . GARAGE_VEHICLES_TABLE . " v
				ON (
					v.user_id = u.user_id AND v.main_vehicle = 1
				)
			WHERE u.user_type IN (" . USER_NORMAL . ', ' . USER_FOUNDER . ")
				$sql_where
			ORDER BY $order_by";
		$result = $db->sql_query_limit($sql, $config['topics_per_page'], $start);
und

Code: Alles auswählen

$sql = $db->sql_build_query('SELECT', array(
			'SELECT'	=> 'u.user_id, u.group_id as default_group, u.username, u.username_clean, u.user_colour, u.user_rank, u.user_posts, u.user_allow_pm, g.group_id, g.group_name, g.group_colour, g.group_type, ug.user_id as ug_user_id, v.id as vid',

			'FROM'		=> array(
				USERS_TABLE		=> 'u',
				GROUPS_TABLE	=> 'g'
			),

			'LEFT_JOIN'	=> array(
				array(
					'FROM'	=> array(USER_GROUP_TABLE => 'ug'),
					'ON'	=> 'ug.group_id = g.group_id AND ug.user_pending = 0 AND ug.user_id = ' . $user->data['user_id']
				)
				,array(
					'FROM'	=> array(GARAGE_VEHICLES_TABLE => 'v'),
					'ON'	=> 'v.user_id = u.user_id AND v.main_vehicle = 1'
				)
			),
bei dem unteren is etwas weiter oben nen komma vor dem array gehört das denn dahin?

Re: Fehlermeldung weiß aber nicht wo er liegt

Verfasst: 21.04.2009 20:23
von Dr.Death
Beim oberen mal ändern in:

Code: Alles auswählen

// Get us some users :D
      $sql = "SELECT u.user_id, v.id as vid
         FROM ( " . USERS_TABLE . " u
            $sql_from )
         LEFT JOIN " . GARAGE_VEHICLES_TABLE . " v
            ON (
               v.user_id = u.user_id AND v.main_vehicle = 1
            )
         WHERE u.user_type IN (" . USER_NORMAL . ', ' . USER_FOUNDER . ")
            $sql_where
         ORDER BY $order_by";
      $result = $db->sql_query_limit($sql, $config['topics_per_page'], $start); 

Re: Fehlermeldung weiß aber nicht wo er liegt

Verfasst: 21.04.2009 20:26
von AK47
du bist mein held aber was war jetzt falsch?

Re: Fehlermeldung weiß aber nicht wo er liegt

Verfasst: 21.04.2009 20:38
von Dr.Death
Nichts.

Ich habe nur 2 Runde Klammern um das

ALT:

Code: Alles auswählen

FROM tabelle1, tabelle2 LEFT JOIN
NEU

Code: Alles auswählen

FROM (tabelle1, tabelle2) LEFT JOIN
gemacht.

Manche Datenbankversionen haben ein Problem bei einer SQL Abfrage über mehrere Tabellen plus einem JOIN.
Die Runden Klammern gruppieren mehrere Tabellen und erleichtern dem JOIN die Arbeit ;-)

Das ist ein MySQL 5 Problem.
Das Script funktioniert einwandfrei auf MySQL 4.x

Eine GENAUE Erlärung findest Du im Referenz Handbuch von MySQL : http://dev.mysql.com/doc/refman/5.1/de/ ... joins.html

Re: Fehlermeldung weiß aber nicht wo er liegt

Verfasst: 21.04.2009 20:42
von AK47
Danke

und da suche ich mir den wolf :D