Re: [otrs-de] Fehler beim Einbinden einer eigenen Kundendatenbank

Hallo Bastian,
Bastian Schern
ich habe ein Problem beim Einbinden unserer eigenen Kundendatenbank in OTRS. Ich erhalte immer den Fehler "Got no MainObject! at /opt/otrs//Kernel/System/DB.pm line 84."
Der Fehler besteht seit 2.2.1. In Kernel/System/CustomerUser/DB.pm muss in Zeile 72 folgendes eingefügt werden: MainObject => $Param{MainObject}, dann geht es wieder. Warum das Problem mit der Version 2.2.2 nicht behoben wurde, weiß ich aber auch nicht.
Params => { DSN => 'DBI:mysql:database=cdb;host=localhost', User => 'otrs', Password => 'lsjgf45nf44ef443rffde4', Table => 'account', },
Das ist hoffentlich nicht das echte Passwort ;) Viele Grüße Karsten -- Karsten Heymann Server-Administrator IP karsten.heymann@telecolumbus.de infocity GmbH Schillerstraße 58, D-10627 Berlin Tel: +49 (0)30 3388 1981 Fax: +49 (0)30 3388 9 1981 -------------------------------------------- Amtsgericht Hannover, HRB 58487 Geschäftsführer: Robert E. Fowler III, Paul Stodden Sitz der Gesellschaft: Peiner Straße 8 - 30519 Hannover

Karsten Heymann schrieb:
Hallo Bastian,
Bastian Schern
writes: ich habe ein Problem beim Einbinden unserer eigenen Kundendatenbank in OTRS. Ich erhalte immer den Fehler "Got no MainObject! at /opt/otrs//Kernel/System/DB.pm line 84."
Der Fehler besteht seit 2.2.1. In Kernel/System/CustomerUser/DB.pm muss in Zeile 72 folgendes eingefügt werden:
MainObject => $Param{MainObject},
dann geht es wieder. Warum das Problem mit der Version 2.2.2 nicht behoben wurde, weiß ich aber auch nicht.
Hat leider nicht funktioniert. Es gibt immernoch die gleiche Fehlermeldung. Ich habe die Zeile genau Zeile 72 eingeführt: --- snip --- 70 # create check item object 71 $Self->{CheckItemObject} = Kernel::System::CheckItem->new(%Param); 72 MainObject => $Param{MainObject}; 73 return $Self; 74 } --- snap --- Sieht aber irgendwie merkwürdig aus. Auch wenn ich $Self->{ainObject} => $Param{MainObject}; schreibe verändert sich nichts.
Password => 'lsjgf45nf44ef443rffde4',
Das ist hoffentlich nicht das echte Passwort ;)
Ist nur Geklimper auf der Tastatur. ;-) Viele Grüße Bastian

Hallo Bastian,
Bastian Schern
Karsten Heymann schrieb:
Der Fehler besteht seit 2.2.1. In Kernel/System/CustomerUser/DB.pm muss in Zeile 72 folgendes eingefügt werden:
MainObject => $Param{MainObject},
dann geht es wieder. Warum das Problem mit der Version 2.2.2 nicht behoben wurde, weiß ich aber auch nicht.
Hat leider nicht funktioniert. Es gibt immernoch die gleiche Fehlermeldung. Ich habe die Zeile genau Zeile 72 eingeführt: --- snip --- 70 # create check item object 71 $Self->{CheckItemObject} = Kernel::System::CheckItem->new(%Param); 72 MainObject => $Param{MainObject}; 73 return $Self; 74 } --- snap --- Sieht aber irgendwie merkwürdig aus.
Bist Du sicher, dass Du die richtige DB.pm geändert hast? Es gibt im OTRS-Baum mehrere Dateien dieses Namens. Unten nochmal der Diff mit den umgebenden Zeilen: --- DB.pm~ 2007-07-26 16:13:33.000000000 +0200 +++ DB.pm 2007-08-15 10:36:17.000000000 +0200 @@ -68,6 +68,7 @@ if ($Self->{CustomerUserMap}->{Params}->{DSN}) { $Self->{DBObject} = Kernel::System::DB->new( LogObject => $Param{LogObject}, + MainObject => $Param{MainObject}, ConfigObject => $Param{ConfigObject}, DatabaseDSN => $Self->{CustomerUserMap}->{Params}->{DSN}, DatabaseUser => $Self->{CustomerUserMap}->{Params}->{User}, Viele Grüße Karsten -- Karsten Heymann Server-Administrator IP karsten.heymann@telecolumbus.de infocity GmbH Schillerstraße 58, D-10627 Berlin Tel: +49 (0)30 3388 1981 Fax: +49 (0)30 3388 9 1981 -------------------------------------------- Amtsgericht Hannover, HRB 58487 Geschäftsführer: Robert E. Fowler III, Paul Stodden Sitz der Gesellschaft: Peiner Straße 8 - 30519 Hannover

Karsten Heymann schrieb:
Bist Du sicher, dass Du die richtige DB.pm geändert hast? Es gibt im OTRS-Baum mehrere Dateien dieses Namens.
Unten nochmal der Diff mit den umgebenden Zeilen:
--- DB.pm~ 2007-07-26 16:13:33.000000000 +0200 +++ DB.pm 2007-08-15 10:36:17.000000000 +0200 @@ -68,6 +68,7 @@ if ($Self->{CustomerUserMap}->{Params}->{DSN}) { $Self->{DBObject} = Kernel::System::DB->new( LogObject => $Param{LogObject}, + MainObject => $Param{MainObject}, ConfigObject => $Param{ConfigObject}, DatabaseDSN => $Self->{CustomerUserMap}->{Params}->{DSN}, DatabaseUser => $Self->{CustomerUserMap}->{Params}->{User},
Ich hatte schon die richtige Datei, nur ist es in OTRS 2.2.1 ein paar Zeilen höher. ;-) Die Fehlermeldung ist jetzt weg, nur leider werden die Kunden irgendwie nicht richtig angezeigt. Es werden lediglich leere Zeilen angezeigt. Die Tabelle `account` hat folgende Struktur: --- snip --- id bigint(20) UNSIGNED customer_id bigint(20) UNSIGNED pass varchar(255) utf8_general_ci title varchar(255) utf8_general_ci firstname varchar(255) utf8_general_ci surname varchar(255) utf8_general_ci birthday date fon varchar(255) utf8_general_ci fax varchar(255) utf8_general_ci email varchar(255) utf8_general_ci language_id varchar(2) utf8_general_ci time_zone_id int(10) UNSIGNED state_id tinyint(3) UNSIGNED create_date datetime last_update timestamp --- snap --- In OTRS habe ich diese folgendermaßen eingebunden: --- snip --- $Self->{CustomerUser1} = { Name => 'Kunden', Module => 'Kernel::System::CustomerUser::DB', Params => { DSN => 'DBI:mysql:database=cdb;host=localhost', User => 'otrs', Password => 'lsjgf45nf44ef443rffde4', Table => 'account', }, # customer uniq id CustomerKey => 'id', # customer # CustomerID => 'id', CustomerValid => 'state_id', CustomerUserListFields => ['firstname', 'surname', 'email'], CustomerUserSearchFields => ['id', 'surname', 'id'], CustomerUserSearchPrefix => '', CustomerUserSearchSuffix => '*', CustomerUserSearchListLimit => 250, CustomerUserPostMasterSearchFields => ['email'], CustomerUserNameFields => ['title','firstname','surname'], CustomerUserEmailUniqCheck => 1, # # show now own tickets in customer panel, CompanyTickets # CustomerUserExcludePrimaryCustomerID => 0, # # generate auto logins # AutoLoginCreation => 0, # AutoLoginCreationPrefix => 'auto', # admin can change customer preferences AdminSetPreferences => 0, # just a read only source ReadOnly => 1, Map => [ # note: Login, Email and CustomerID needed! # var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly [ 'UserSalutation', 'Salutation', 'title', 1, 0, 'var', '', 1 ], [ 'UserFirstname', 'Firstname', 'firstname', 1, 1, 'var', '', 1 ], [ 'UserLastname', 'Lastname', 'surname', 1, 1, 'var', '', 1 ], [ 'UserLogin', 'Username', 'id', 1, 1, 'var', '', 1 ], [ 'UserPassword', 'Password', 'pass', 0, 1, 'var', '', 1 ], [ 'UserEmail', 'Email', 'email', 0, 1, 'var', '', 1 ], [ 'UserCustomerID', 'CustomerID', 'id', 0, 1, 'var', '', 1 ], [ 'UserComment', 'Comment', 'info', 1, 0, 'var', '', 1 ], [ 'ValidID', 'Valid', 'state_id', 0, 1, 'int', '', 1 ], ], # default selections Selections => { UserSalutation => { 'Mr.' => 'Herr', 'Mrs.' => 'Frau', }, }, }; --- snap --- Gibt es eine Möglichkeit zu debugen, was da schief läuft? Viele Grüße Bastian

Bastian Schern
Karsten Heymann schrieb:
Bist Du sicher, dass Du die richtige DB.pm geändert hast?
Ich hatte schon die richtige Datei, nur ist es in OTRS 2.2.1 ein paar Zeilen höher. ;-)
alles klar ;-)
Die Fehlermeldung ist jetzt weg, nur leider werden die Kunden irgendwie nicht richtig angezeigt. Es werden lediglich leere Zeilen angezeigt.
Die Tabelle `account` hat folgende Struktur: --- snip --- --- snap ---
Gibt es eine Möglichkeit zu debugen, was da schief läuft?
Was ich gemacht habe, um nach Fehlern zu suchen, ist, im Backend-Modul ein paar log-Aufrufe einzufügen, um sehen zu können, was passiert. Ich habe dafür eine Kopie des Backend-Moduls angelegt und folgendes geändert (Auszug): ######## schnipp ######## --- LDAP.pm 2007-07-26 16:13:33.000000000 +0200 +++ LDAP2.pm 2007-08-16 08:09:01.000000000 +0200 @@ -10,13 +10,14 @@ # did not receive this file, see http://www.gnu.org/licenses/gpl.txt. # -- -package Kernel::System::CustomerUser::LDAP; +package Kernel::System::CustomerUser::LDAP2; use strict; use warnings; use Net::LDAP; use Kernel::System::Encode; use Kernel::System::Cache; +use Data::Dumper; use vars qw(@ISA $VERSION); $VERSION = '$Revision: 1.33 $'; @@ -162,9 +163,18 @@ return $Self; } +sub log { + my $Self = shift; + my $Function = shift; + my $Message = Data::Dumper->Dump([@_],[$Function]); + $Message =~ s/\n//g; + $Self->{LogObject}->Log(Priority => 'notice', Message => $Message); +} + sub CustomerName { my $Self = shift; my %Param = @_; + $Self->log("CustomerName", \%Param); my $Name = ''; # check needed stuff if (!$Param{UserLogin}) { @@ -226,6 +236,7 @@ sub CustomerSearch { my $Self = shift; my %Param = @_; + $Self->log("CustomerSearch", \%Param); # check needed stuff if (!$Param{Search} && !$Param{UserLogin} && !$Param{PostMasterSearch}) { $Self->{LogObject}->Log(Priority => 'error', Message => "Need Search, UserLogin or PostMasterSearch!"); @@ -470,6 +484,7 @@ Key => "CustomerUser::CustomerUserDataGet::$Filter", ); if ($Data) { + $Self->log("CustomerUserDataGetCacheData", \%{$Data}); return %{$Data}; } } @@ -521,12 +536,15 @@ ); } # return data + $Self->log("CustomerUserDataGet:Data", \%Data); + $Self->log("CustomerUserDataGet:Preferences", \%Preferences); return (%Data, %Preferences); } sub CustomerUserAdd { my $Self = shift; my %Param = @_; + $Self->log("CustomerUserAdd", \%Param); # check ro/rw if ($Self->{ReadOnly}) { $Self->{LogObject}->Log(Priority => 'error', Message => "Customer backend is ro!"); ######## schnapp ######## Danach klärt sich vieles bei einem Blick ins Adminlog. hth und gruß Karsten -- Karsten Heymann Server-Administrator IP karsten.heymann@telecolumbus.de infocity GmbH Schillerstraße 58, D-10627 Berlin Tel: +49 (0)30 3388 1981 Fax: +49 (0)30 3388 9 1981 -------------------------------------------- Amtsgericht Hannover, HRB 58487 Geschäftsführer: Robert E. Fowler III, Paul Stodden Sitz der Gesellschaft: Peiner Straße 8 - 30519 Hannover

Karsten Heymann schrieb:
Bastian Schern
writes: Gibt es eine Möglichkeit zu debugen, was da schief läuft?
Was ich gemacht habe, um nach Fehlern zu suchen, ist, im Backend-Modul ein paar log-Aufrufe einzufügen, um sehen zu können, was passiert. Ich habe dafür eine Kopie des Backend-Moduls angelegt und folgendes geändert (Auszug):
######## schnipp ######## [...] ######## schnapp ########
Danach klärt sich vieles bei einem Blick ins Adminlog.
Vielen Dank für die Hilfe. Es hat sogar ein ein Blick ins normale System Log genügt. Ich habe mich einfach bei einer Spaltenbezeichnung vertippt. ;-) Noch einmal Vielen Dank für die Hilfe. Viele Grüße Bastian
participants (2)
-
Bastian Schern
-
Karsten Heymann