Einstellungen für Attribute werden nicht mehr angezeigt
-
Hallo zusammen,
vor ein paar Tagen habe ich festgestellt, dass die Attribute in den Einstellungen nicht mehr angezeigt werden.
Ich habe bereits einige Attribute definiert, wenn ich in die
Attribut Einstellungenauswähle, bekomme ich folgende FehlermeldungThe DAO class does not exist.Hier ist ein Ausschnitt aus dem Fenster:

Was ist die Ursache dafür? Und wie kann man es korrigieren?
Viele Grüße
-
Hallo @coffee_junkie,
du könntest zusätzlich noch auf dem Webserver im i-doit root-Verzeichnis schauen. Dort sollte es einen Ordner
loggeben, in dem i-doit u.a. seine Fehler protokoliert. Die Logs, die für dich an dieser Stelle interessant sein sollten, fangen mitexception_an. Evtl. findest du dort weitere Informationen über die Ursache des Fehlers.Grüße
Nico -
Hallo @Nico,
danke für den Hinweis.
Leider geben die Log-Dateien keinen klaren Aufschluss über die eigentliche Ursache des Problems.
Hier sind die Logs vom gestrigen Tag:
[2025-11-11 12:10:56] i-doit.ERROR: The DAO class does not exist. (/var/www/idoittest.domain.de/src/classes/modules/pro/src/Model/AttributeSettings.php:350) [2025-11-11 13:41:32] i-doit.ERROR: The DAO class does not exist. (/var/www/idoittest.domain.de/src/classes/modules/pro/src/Model/AttributeSettings.php:350)Ich habe mir außerdem die Datei
AttributeSettings.phpan der betreffenden Stelle (Zeile 350) genauer angesehen und die zugehörige Funktion überprüft:/** * @param string $constant * * @return isys_cmdb_dao_category * @throws \isys_exception_database */ public function getCategoryDaoByConstant(string $constant): isys_cmdb_dao_category { $constantValue = $this->convert_sql_text($constant); $sql = "SELECT isysgui_catg__id AS id, isysgui_catg__class_name AS className FROM isysgui_catg WHERE isysgui_catg__const = {$constantValue} UNION SELECT isysgui_cats__id AS id, isysgui_cats__class_name AS className FROM isysgui_cats WHERE isysgui_cats__const = {$constantValue} UNION SELECT isysgui_catg_custom__id AS id, isysgui_catg_custom__class_name AS className FROM isysgui_catg_custom WHERE isysgui_catg_custom__const = {$constantValue};"; $row = $this->retrieve($sql) ->get_row(); if (!class_exists($row['className'])) { throw new Exception('The DAO class ' . $row['className'] . ' does not exist.'); } if (!is_a($row['className'], isys_cmdb_dao_category::class, true)) { throw new Exception('The DAO class ' . $row['className'] . ' needs to extend isys_cmdb_dao_category.'); } $dao = $row['className']::instance($this->m_db); if ($row['className'] === 'isys_cmdb_dao_category_g_custom_fields') { /** @var isys_cmdb_dao_category_g_custom_fields $dao */ $dao->set_catg_custom_id($row['id']); } return $dao; }
Nachtrag:
Ich habe die Testumgebung exakt so eingerichtet wie die Produktivumgebung (eine 1:1-Migration). In der Produktivumgebung funktionieren auch die Attribut-Einstellungen ohne Probleme.
In der Datenbank selbst sind nur zwei Tabellen vorhanden, die mit
isys_cmdb*beginnen. In diesem Fall handelt es sich um folgende Tabellen:MariaDB [idoit_data]> SHOW TABLES; isys_cmdb_status isys_cmdb_status_changes
Viele Grüße
-
Hallo @coffee_junkie,
du könntest auf der DB mal noch schauen, was er im Hintergrund versucht für Daten zu laden und ob dir hier etwas ungewöhnliches auffällt:
SELECT isysgui_catg__id AS id, isysgui_catg__class_name AS className, isysgui_catg__const FROM isysgui_catg UNION SELECT isysgui_cats__id AS id, isysgui_cats__class_name AS className, isysgui_cats__const FROM isysgui_cats UNION SELECT isysgui_catg_custom__id AS id, isysgui_catg_custom__class_name AS className, isysgui_catg_custom__const FROM isysgui_catg_custom;Anhand dem großen Abstand bei
class__does not existsieht es für mich so aus, als ob er für eine Kategoriekonstante keine entsprechende Klasse finden kann. Leider wird die Konstante nicht mit in der Fehlermeldung ausgegeben. Du könntest natürlich selbst die Fehlermeldung im Code erweitern aber ich denke das klingt eher nach einem Problem für den i-doit Support: https://help.i-doit.com/hc/de/requests/newGrüße
Nico -
Hallo @Nico,
ich habe die SQL-Abfrage ausgeführt.
SELECT isysgui_catg__id AS id, isysgui_catg__class_name AS className, isysgui_catg__const FROM isysgui_catg UNION SELECT isysgui_cats__id AS id, isysgui_cats__class_name AS className, isysgui_cats__const FROM isysgui_cats UNION SELECT isysgui_catg_custom__id AS id, isysgui_catg_custom__class_name AS className, isysgui_catg_custom__const FROM isysgui_catg_custom;Dies ist nur ein Teil der Datenbank. Hier ist die Ausgabe:

...

Viele Grüße
-
Hallo @coffee_junkie,
denke du solltest ein Ticket aufmachen.
Ich habe zumindest keine Ideen mehr ...