- Betroffene App
- WoltLab Suite Core
Bin gerade dabei eigene Eingabefelder wie in der Filebase bei mir in der Applikation mit einzubauen und zu testen und bekam plötzlich ein SQL Fehler.
Kann diesen Fehler übrigens ebenfalls mit der filebase (3.1.0 RC 3) produzieren.
Hier mal genau formuliert wie ich den Fehler ohne Probleme auch mit der Filebase reproduzieren kann:
- Im ACP in der Filebase ein Eingabefeld hinzufügen
- Formular ausfüllen bzw. reicht es ja in dem Fall nur ein Namen einzugeben.
- Nun in den "cache/" Ordner gehen und alle (.php) Dateien löschen
- Formular absenden
- SQL Fehler
Fehler taucht auf wenn
- im "cache/" Ordner alle Dateien gelöscht werden oder
- über das Entwicklerwerkzeug z.B. die Dateien (files.tar) gesynct werden.
Fehler taucht nicht auf wenn man die "Cache leeren" Funktion in der Cache Übersicht (ACP -> Verwaltung -> Cache) nutzt.
Gehe davon aus das passiert nur wenn der Cache noch gar nicht aufgebaut wurde, da man beim Cache leeren wieder auf die Seite zurück landet ist bereits ein Teil vom Cache da, was bei den anderen 2 Methoden nicht der Fall ist.
Kompletter Fehler
-
PHP Version:
7.1.7
-
WoltLab Suite Core:
3.1.0 RC 4
-
Peak Memory Usage:
4.741/128 MiB
-
Request URI:
/wcf/filebase/acp/index.php?file-option-add/
-
Referrer:
-
Original Error
-
Error Type:
PDOException
-
Error Message:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'optionTitle' in 'field list'
-
Error Code:
42
-
File:
*/lib/system/database/Database.class.php (243)
-
Stack Trace:
- #0 */lib/system/database/Database.class.php (243):
- PDO->prepare('INSERT INTO wcf1_option (optionTitle,optionDescription,optionType,defaultValue,showOrder,validationPattern,selectOptions,required) VALUES (?,?,?,?,?,?,?,?)')
- #1 */lib/data/DatabaseObjectEditor.class.php (35):
- wcf\system\database\Database->prepareStatement('INSERT INTO wcf1_option (optionTitle,optionDescription,optionType,defaultValue,showOrder,validationPattern,selectOptions,required) VALUES (?,?,?,?,?,?,?,?)')
- #2 */../../../../[internal function] (?):
- wcf\data\DatabaseObjectEditor::create([ 8 items ])
- #3 */lib/data/AbstractDatabaseObjectAction.class.php (336):
- call_user_func([ 0 => , 1 => ], [ 8 items ])
- #4 */../../../../[internal function] (?):
- wcf\data\AbstractDatabaseObjectAction->create()
- #5 */lib/data/AbstractDatabaseObjectAction.class.php (204):
- call_user_func([ 0 => , 1 => ])
- #6 */filebase/lib/acp/form/FileOptionAddForm.class.php (191):
- wcf\data\AbstractDatabaseObjectAction->executeAction()
- #7 */lib/form/AbstractForm.class.php (62):
- filebase\acp\form\FileOptionAddForm->save()
- #8 */lib/form/AbstractForm.class.php (113):
- wcf\form\AbstractForm->submit()
- #9 */lib/page/AbstractPage.class.php (291):
- wcf\form\AbstractForm->readData()
- #10 */lib/page/AbstractPage.class.php (114):
- wcf\page\AbstractPage->show()
- #11 */lib/system/request/Request.class.php (83):
- wcf\page\AbstractPage->__run()
- #12 */lib/system/request/RequestHandler.class.php (96):
- wcf\system\request\Request->execute()
- #13 */filebase/acp/index.php (9):
- wcf\system\request\RequestHandler->handle('filebase', true)
Final Error
-
Error Type:
wcf\system\database\exception\DatabaseQueryException
-
Error Message:
Could not prepare statement 'INSERT INTO wcf1_option (optionTitle,optionDescription,optionType,defaultValue,showOrder,validationPattern,selectOptions,required) VALUES (?,?,?,?,?,?,?,?)'
-
Error Code:
42
-
File:
*/lib/system/database/Database.class.php (248)
-
Stack Trace:
- #0 */lib/data/DatabaseObjectEditor.class.php (35):
- wcf\system\database\Database->prepareStatement('INSERT INTO wcf1_option (optionTitle,optionDescription,optionType,defaultValue,showOrder,validationPattern,selectOptions,required) VALUES (?,?,?,?,?,?,?,?)')
- #1 */../../../../[internal function] (?):
- wcf\data\DatabaseObjectEditor::create([ 8 items ])
- #2 */lib/data/AbstractDatabaseObjectAction.class.php (336):
- call_user_func([ 0 => , 1 => ], [ 8 items ])
- #3 */../../../../[internal function] (?):
- wcf\data\AbstractDatabaseObjectAction->create()
- #4 */lib/data/AbstractDatabaseObjectAction.class.php (204):
- call_user_func([ 0 => , 1 => ])
- #5 */filebase/lib/acp/form/FileOptionAddForm.class.php (191):
- wcf\data\AbstractDatabaseObjectAction->executeAction()
- #6 */lib/form/AbstractForm.class.php (62):
- filebase\acp\form\FileOptionAddForm->save()
- #7 */lib/form/AbstractForm.class.php (113):
- wcf\form\AbstractForm->submit()
- #8 */lib/page/AbstractPage.class.php (291):
- wcf\form\AbstractForm->readData()
- #9 */lib/page/AbstractPage.class.php (114):
- wcf\page\AbstractPage->show()
- #10 */lib/system/request/Request.class.php (83):
- wcf\page\AbstractPage->__run()
- #11 */lib/system/request/RequestHandler.class.php (96):
- wcf\system\request\Request->execute()
- #12 */filebase/acp/index.php (9):
- wcf\system\request\RequestHandler->handle('filebase', true)
War mir jetzt nicht sicher ob es zur Filebase oder zum Core gehört, da es meiner Applikation auch betrifft dachte ich mir in Core passt es besser rein.
// Edit:
Schöner Zusatzeffekt wäre hier noch wenn man Cache reset macht (wie oben beschrieben) und dann auf die Eingabefelder Liste geht, nun hat man eine Liste aller Optionen die es gibt.
Und man könnte das natürlich auch fixen in dem man "databaseTableName" überschreibt, aber ich denke mal trotzdem ist der Effekt nicht erwünscht.