Problem beim Anlegen eines Schülers

Hallo Forum,

das Thema wurde hier:

http://linuxmuster.lbs.bw.schule.narkive.com/JvFaywaN/probleme-beim-anlegen-der-neuen-benutzer#post23

schon mal beschrieben. Eine Lösung finde ich nur andeutungsweise. Es ist von einem Ticket von Frank die Rede.

Wer kann mir weiterhelfen und einen Link zu dem Ticket geben?

Gruß

Alois

Hallo Alois!

Meinst Du dieses Ticket das in dem Thread erwähnt wird?

http://www.lml.support-netz.de/trac/ticket/557

Da wirst Du als “Ausländer” nix werden, denke ich! :wink: Du weißt aber schon, dass der Thread aus dem Jahre 2012 stammt, oder?

Wie sieht den dein Problem beim Anlegen des Schülers genau aus?

Beste Grüße

Thorsten

Hallo Thorsten,

ok, auf den Link bin ich auch gestoßen. Ich dachte der Beitrag von Frank sei auf linuxmuster.net zu finden.

Beim Versuch einen User anzulegen kommt das:

Daten der Person geändert

Creating User 1 :

Nachname: Diz
Vorname: Car
Geburtsdatum: 27.03.2001
Identifier: Diz;Car;27.08.2000
AdminClass: 9a
GECOS: Car Diz
Login (prüfen): dizca
Login (OK): dizca
Passwort: 7FsDNE
Shell (students): /bin/false
DBD::Pg::db selectrow_array failed: ERROR: duplicate key value violates unique constraint "ldap_entries_dn"
DETAIL: Key (dn)=(uid=dizca,ou=accounts,dc=linuxmuster-net,dc=local) already exists.
CONTEXT: SQL statement "INSERT INTO ldap_entries (id,dn,oc_map_id,parent,keyval) VALUES (ldap_entries_id,‘uid=’||username||’,ou=accounts,’||getdn,3,2,posix_account_id)"
PL/pgSQL function “manual_create_ldap_for_account” line 12 at SQL statement at /usr/share/perl5/Sophomorix/SophomorixPgLdap.pm line 1620, line 1.

Ich hatte Rüdiger angeschrieben und erhielt von Ihm den Rat die Lösung von Frank probieren.

Gruß

Alois

1 „Gefällt mir“

Hallo Thorsten,

die Analyse der Datenbank zeigt, dass sich der Benutzername in einer Tabelle befindet. Trotzdem ergibt der Versuch den Benutzer mit sophomorix-kill --killuser zu löschen dass der User nicht existiert.

Hier die Rückmeldung des Befehls:

20:32/0 server ~ # sophomorix-kill --killuser dizca
#### sophomorix locked (/usr/sbin/sophomorix-add, PID: 20081)             ####
PID 20081 not running anymore
   I'm stealing the lockfile
#### Stealing lock in /var/lib/sophomorix/lock/sophomorix.lock            ####
#### /usr/sbin/sophomorix-kill started ...                                ####
#### Dumping database ldap before I modify it                             ####
#### Beginn deletion ...                                                  ####
Killing the following List of users: dizca
Killing dizca
Cannot kill user dizca (nonexisting?)
#### NOT creating mailaliases/lists (0 users removed)                     ####
#### 0 users killed                                                       ####
#### Removing lock in /var/lib/sophomorix/lock/sophomorix.lock            ####
#### /usr/sbin/sophomorix-kill terminated regularly                       ####

Gruß

Alois

Hallo Forum,

das Problem ist gelöst. Es war tatsächlich ein Eintrag in einer Tabelle vorhanden. Nachdem Rüdiger diesen Eintrag gelöscht hatte konnte der Benutzer angemeldet werden.

Wie der unvollständige Eintrag des Users in die Tabelle kam ist unklar.

Vielen Dank noch mal an Rüdiger.

Gruß

Alois

Hallo Forum,

ich habe das Problem wieder und habe hier

https://hcmc.uvic.ca/blogs/index.php/how_to_fix_postgresql_error_duplicate_ke?blog=22

eine Anleitung gefunden wie das Problem behoben werden könnte. Ich selbst habe zu wenig Ahnung von Postgres und werde auf @jeffbeck warten.

Vielleicht hilft diese Seite jemand der mehr Ahnung hat als ich.

Gruß

Alois

Ich bin leider nicht tief genug in postgres bzw. SQL drin. Deshalb brauche ich hilfe von einem SQL-Fachmann.
Mit folgender Funktion wird in der 6.2. ein user gelöscht:

CREATE FUNCTION manual_delete_account(character varying) RETURNS integer
    AS '
    DECLARE
     username ALIAS FOR $1;
     posix_account_id INTEGER;
     get_uidnumber INTEGER;
     ldap_entries_id INTEGER;
    BEGIN
     SELECT INTO posix_account_id id FROM posix_account WHERE uid=username;
     SELECT INTO get_uidnumber uidnumber FROM posix_account WHERE uid=username;
     SELECT INTO ldap_entries_id id FROM ldap_entries WHERE keyval=posix_account_id AND oc_map_id=3;

     DELETE FROM ldap_entries WHERE id=ldap_entries_id;
     DELETE FROM groups_users WHERE memberuidnumber=get_uidnumber;
     DELETE FROM ldap_entry_objclasses WHERE entry_id=ldap_entries_id;
     DELETE FROM posix_account WHERE id=posix_account_id;
     DELETE FROM posix_account_details WHERE id=posix_account_id;
     DELETE FROM samba_sam_account WHERE id=posix_account_id;

     RETURN get_uidnumber;
    END;
    '
    LANGUAGE plpgsql;

Siehe auch: https://github.com/linuxmuster/sophomorix2/blob/master/sophomorix-pgldap/config-pg/sophomorix.sql

Das Problem ist wahrscheinlich, dass die (mehrere) DELETE statement nicht alle abgelaufen sind.
Diese müsste man händisch nacholen (mit den richtigen ids, die in den SELECT Befehlen ermitelt werden). Vor dem löschen erst mal anzeigen lassen was man löscht, ebenso ein Backup der Datenbank machen.

Jetzt müsste jemand ran, der sich mit sql statements auskennt.

LG, Rüdiger

Ich schiebe das noch mal hoch. Kann wer im Forum helfen?

Gruß

Alois

Ich war nicht untätig und habe - nach einem Hinweis eines Kollegen - den Versuch unternommen mit pgAdmin auf die Datenbank zuzugreifen. Das gelingt, aber ich komme nicht weiter. Bei phpmyadmin von mysql hatte ich da mehr Durchblick.

Wie kann ich denn mit pgAdmin Daten suchen und ggf. löschen?

Gruß

Alois

Hallo Alois,

Wie kann ich denn mit pgAdmin Daten suchen und ggf. löschen?

da kann ich leider nciht helfen … sorry.
Ich schau bei sowas immer mit ecosia nach dem Problem: die zweite oder
dritte Seite bringt dann Erleuchtung.

LG

Holger