Zum Inhalt springen

MySQL-Error im Backend (nur bei Typo3 4.3.0)

Erstellt am 2. Dezember 2009 · 8 Antworten · letzte Antwort am 13. Januar 2010

Tags: TCA, Datenbank, Frage

intensivstation ·

Ich erhalte bei meiner Extension im Backend unter folgenden Bedingungen eine Fehlermeldung:
- Typo3 4.3.0 stable (bei einer 4.2.10-Installation nicht)
- unter Web -> Liste
Die Fehlermeldung:
t3lib_DB::exec_SELECTquery
SELECT count(*) FROM meine_tabelle WHERE l10n_parent=100 AND sys_language_uid!=0 AND =0

Da fehlt eine Tabellenspalte vor =0. Was kann die Ursache sein?
Ich nehme an, es fehlt wahrscheinlich "deleted=0". deleted gibt es aber bei der Tabelle als Feld nicht.
Kann das ein Typo3-Bug sein?

einpraegsam.​net ·

Interessant wäre der wirkliche Name von "meine_tabelle". Wenn es sich um eine Extensionspezifische Tabelle handelt, gibt es vermutlich nur einen kleinen Bug in der TCA Konfiguration...
Warum das jetzt sichtbar ist und früher? Eventuell hast du die SQL Fehlermeldungen aktiviert.

intensivstation ·

Es ist eine Extensionspezifische Tabelle. Was kann den in der TCA falsch sein?
Habe die mit dem Kickstarter erstellt und nachträglich editiert...

intensivstation ·

Also an SQLdebug liegt es nicht.
Die Fehlermeldung bekomme ich definitiv nur in Typo3 4.3.0.
Folglich ist es ein Bug. Meine Vermutung stimmte auch. Es liegt daran, dass ich kein deleted-Feld bei dieser Tabelle habe. Das SQL-Statement in der Typo3-Datei class.t3lib_befunc.php sieht nämlich so aus:

			$count = $GLOBALS['TYPO3_DB']->exec_SELECTcountRows(
				'*',
				$table,
				$GLOBALS['TCA'][$table]['ctrl']['transOrigPointerField'] . '=' . intval($ref) .
					' AND ' . $GLOBALS['TCA'][$table]['ctrl']['languageField'] . '!=0' .
					' AND ' . $GLOBALS['TCA'][$table]['ctrl']['delete'] . '=0'
			);

Da wird einfach davon ausgegangen, dass es ein deleted-Feld gibt.
Wenn ich die delete-Zeile auskommentiere, kommen auch keine Fehlermeldungen mehr. Das ist wohl eindeutig ein Typo3-Bug und kein Bug in meiner Extension.

InforMedic ·

In meiner Extension das gleiche Problem. Deleted ist nicht in der DB Tabelle enthalten, woraufhin mir cc_debug alarm schlägt:

SQL debug
String (26) caller t3lib_DB::exec_SELECTquery
String (148-) ERROR 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 '=0' at line 1
String (89) lastBuiltQuery SELECT COUNT(*) FROM tx_myext_table WHERE l10n_parent=1 AND sys_language_uid !=0 AND =0
String (318-) debug_backtrace SC_db_list->main#439 // recordList->generateList#292 // localRecordList->getTable#295 // localRecordList->renderListRow#547 // localRecordList->makeControl#696 // t3lib_BEfunc::translationCount#1253 // t3lib_DB->exec_SELECTcountRows#3577 // t3lib_DB->exec_SELECTquery#360 // t3lib_DB->debug#242

Soll man eventuell ab 4.3 immer "deleted" mitverwendenen?!?

just2b ·

naja bei normalen datensätzen, die den redakteur betreffen macht ein deleted feld schon sinn.

aber ich schau mal was ein RFC hergibt