Community
    • Categories
    • Recent
    • Popular
    • Users
    • Search
    • Register
    • Login

    Einstellungen für Attribute werden nicht mehr angezeigt

    Scheduled Pinned Locked Moved Betrieb
    6 Posts 2 Posters 42 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • C Offline
      coffee_junkie
      last edited by

      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 Einstellungen auswähle, bekomme ich folgende Fehlermeldung The DAO class does not exist.

      Hier ist ein Ausschnitt aus dem Fenster:

      idoittest_datenattribute.png

      Was ist die Ursache dafür? Und wie kann man es korrigieren?

      Viele Grüße

      N 1 Reply Last reply Reply Quote 0
      • N Offline
        Nico @coffee_junkie
        last edited by

        Hallo @coffee_junkie,

        du könntest zusätzlich noch auf dem Webserver im i-doit root-Verzeichnis schauen. Dort sollte es einen Ordner log geben, in dem i-doit u.a. seine Fehler protokoliert. Die Logs, die für dich an dieser Stelle interessant sein sollten, fangen mit exception_ an. Evtl. findest du dort weitere Informationen über die Ursache des Fehlers.

        Grüße
        Nico

        C 1 Reply Last reply Reply Quote 0
        • C Offline
          coffee_junkie @Nico
          last edited by coffee_junkie

          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.php an 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

          N 1 Reply Last reply Reply Quote 0
          • N Offline
            Nico @coffee_junkie
            last edited by

            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 exist sieht 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/new

            Grüße
            Nico

            1 Reply Last reply Reply Quote 0
            • C Offline
              coffee_junkie
              last edited by

              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:

              output_tables_01.png

              ...

              output_tables_07.png

              Viele Grüße

              N 1 Reply Last reply Reply Quote 0
              • N Offline
                Nico @coffee_junkie
                last edited by

                Hallo @coffee_junkie,

                denke du solltest ein Ticket aufmachen.
                Ich habe zumindest keine Ideen mehr ...

                1 Reply Last reply Reply Quote 0
                • First post
                  Last post