SugarCRM: Warning: Includes klappen nicht – fehlerhafte / gelöschte Relationships zwischen Modulen

Ich habe heute wieder ein wenige mit meinen eigenen Modulen „herum gespielt“ und erhielt, nachdem ich eine Relation zwischen Gebäudeverwaltung und Bildverwaltung gelöscht habe, allerdings keine Hacken bei „Tabellen löschen“ setzte, unten angefügte Fehlermeldung.

Aenderung_03

Warning: include(custom/metadata/gebma_gebaeudeverwaltung_gebma_gebma_imagesMetaData.php): failed to open stream: No such file or directory in /var/www/sugar/custom/application/Ext/TableDictionary/tabledictionary.ext.php on line 31 Warning: include(): Failed opening 'custom/metadata/gebma_gebaeudeverwaltung_gebma_gebma_imagesMetaData.php' for inclusion (include_path='/var/www/sugar/include/..:.:/usr/share/php:/usr/share/pear') in /var/www/sugar/custom/application/Ext/TableDictionary/tabledictionary.ext.php on line 31 Warning: include(custom/metadata/gebma_gebma_images_gebma_gebaeudeverwaltungMetaData.php): failed to open stream: No such file or directory in /var/www/sugar/custom/application/Ext/TableDictionary/tabledictionary.ext.php on line 41 Warning: include(): Failed opening 'custom/metadata/gebma_gebma_images_gebma_gebaeudeverwaltungMetaData.php' for inclusion (include_path='/var/www/sugar/include/..:.:/usr/share/php:/usr/share/pear') in /var/www/sugar/custom/application/Ext/TableDictionary/tabledictionary.ext.php on line 41 

Es war kein vernünftiges Arbeiten mehr möglich, ständig Overlays mit dieser oder ähnlich gearteter Fehlermeldung.

Daher habe ich mir die Datei tabledictionary.php mal angeschaut, die unter /var/www/sugar/custom/application/Ext/TableDictionary/ steht.

Inhalt meiner tabledictionary.php


Hier werden die selbst erstellten Relationships zwischen den verschiedenen Modulen hinterlegt, damit SugarCRM in der Lage ist, die passenden MetaDaten dazu zu laden.

Eine solche, zu inkludierende Datei mal dargestellt:

 'many-to-many',
  'relationships' => 
  array (
    'gebma_gebaeudeverwaltung_gebma_office' => 
    array (
      'lhs_module' => 'gebMa_gebaeudeverwaltung',
      'lhs_table' => 'gebma_gebaeudeverwaltung',
      'lhs_key' => 'id',
      'rhs_module' => 'gebMa_office',
      'rhs_table' => 'gebma_office',
      'rhs_key' => 'id',
      'relationship_type' => 'many-to-many',
      'join_table' => 'gebma_gebaeudeverwaltung_gebma_office_c',
      'join_key_lhs' => 'gebma_geba1aa0waltung_ida',
      'join_key_rhs' => 'gebma_gebaeudeverwaltung_gebma_officegebma_office_idb',
    ),
  ),
  'table' => 'gebma_gebaeudeverwaltung_gebma_office_c',
  'fields' => 
  array (
    0 => 
    array (
      'name' => 'id',
      'type' => 'varchar',
      'len' => 36,
    ),
    1 => 
    array (
      'name' => 'date_modified',
      'type' => 'datetime',
    ),
    2 => 
    array (
      'name' => 'deleted',
      'type' => 'bool',
      'len' => '1',
      'default' => '0',
      'required' => true,
    ),
    3 => 
    array (
      'name' => 'gebma_geba1aa0waltung_ida',
      'type' => 'varchar',
      'len' => 36,
    ),
    4 => 
    array (
      'name' => 'gebma_gebaeudeverwaltung_gebma_officegebma_office_idb',
      'type' => 'varchar',
      'len' => 36,
    ),
  ),
  'indices' => 
  array (
    0 => 
    array (
      'name' => 'gebma_gebaeudeverwaltung_gebma_officespk',
      'type' => 'primary',
      'fields' => 
      array (
        0 => 'id',
      ),
    ),
    1 => 
    array (
      'name' => 'gebma_gebaeudeverwaltung_gebma_office_alt',
      'type' => 'alternate_key',
      'fields' => 
      array (
        0 => 'gebma_geba1aa0waltung_ida',
        1 => 'gebma_gebaeudeverwaltung_gebma_officegebma_office_idb',
      ),
    ),
  ),
);

Hier finden sich dann die Datenbanktabellen wieder, zwischen denen eine entsprechende, hier many-to-many Relation erstellt wurde, welche einzelnen Spalten dort zu finden sind und wie die Zwischentabelle heißt usw.

So, nun hatte ich auch ein entsprechende Relation zwischen Gebäude und Bild, diese habe ich dann zum Test wieder gelöscht, doch eben nicht die Tabellen in der Datenbank.
Der Fehler lies sich dann durch manuelles entfernen der Tabellen beheben, nun funktioniert wieder alles wie es soll.

Wer das passende SQL Statement nicht gleich parat hat 😉

DROP TABLE 

Vielen Dank für’s Lesen!