Lion Server Profilmanager: Gerät wird nicht hinzugefügt

Hintergrund
Ich habe mein iPhone 4s umtauschen müssen. Durch den Gerätewechsel (alte SIM-Karte ins Tauschgerät), funktionierte der Profilmanager plötzlich nicht mehr. In der Konsole des Servers tauchte auch plötzlich folgende Meldung auf:

ProfileManager[462]: ActiveRecord::StatementInvalid (PGError: ERROR:  duplicate key value violates unique constraint "devices_ICCID_key" 
DETAIL:  Key ("ICCID")=(0000 0000 0000 0000 0000) already exists.

Hinweis: ICCID-Nummer lautete natürlich nicht 0000 0000 0000 0000 0000! 

Die Folge ist, dass das neue Gerät nicht korrekt in den Profilmanager hinzugefügt werden kann. Zu erkennen ist dies unter anderem auch daran, dass der Gerätenamen falsch angeben wird (bsp. “iPhone” oder “NewDevice”). Der Profilmanager versucht dauert Informationen einzuholen, dies gelingt ihm nicht…

Fehlerhafter Eintrag in der PostgreSQL-Datenbank
Informationen über Geräte und Benutzer werden vom Profil Manager in einer PostgreSQL-Datenbank abgelegt. Da nur mein Gerät getausch wurde, jedoch nicht meine SIM-Karte gab es ein Konflikt. Denn das “alte” Gerät wurde in der Datenbank mit der ICCID-Nummer meiner SIM-Karte verknüpft. Als ich nun mit der selben SIM-Karte ein weiteres Gerät verknüpfen wollte, kam es zum Konflikt… Komisch nur, dass dies mit meinen iPads nie vorgekommen ist. Diese teilen sich nämlich auch ständig eine SIM-Karte… Auf jeden Fall musste nun dieser Konflikt in der PostgreSQL-Datenbank gelöst werden. Diese ist zum Glück ähnlich aufgebaut wie eine mySQL-Datenbank.

Lösung
Am einfachsten klappt dies übers Terminal. In einem ersten Schritt nimmt man Kontakt mit der Datenbank auf:

sudo -u _devicemgr psql device_management

Nun wird dafür gesorgt, dass alles Detail sauber ausgegeben werden:

\x on;

Nun wird nach unserer ICCID-Nummer gesucht:

SELECT * FROM devices WHERE "ICCID" LIKE '0000 0000 0000 0000 0000';

Natürlich geben wir hier nicht die vielen Nullen ein, sondern exakt die ICCID-Nummer, welche die Konsole ständig ausgibt! Nun wird eine lange Liste ausgegeben mit vielen Informationen. Wenn ja, sind wir auf der richtigen Spur. Nun mit der Enter-Taste so lange bestätigen bis wir wieder bei der Befehlseingabe angelangt sind…

Nun wird der entsprechende Eintrag durch folgenden Befehl gelöscht:

DELETE FROM devices WHERE "ICCID" LIKE '0000 0000 0000 0000 0000';

Mit dem Befehl “exit” wird die PostgreSQL-Verbindung im Terminal verlassen. Damit der Serverdienst auch wirklich neu arbeitet. Stoppen wir PostgreSQL und starten ihn anschliessend neu. Dies wird folgendermassen im Terminal gleich gemacht:

sudo serveradmin stop postgres
sudo serveradmin start postgres

Um zu prüfen, ob der Serverdienst normal läuft, geben wir noch folgendes ein:

sudo serveradmin fullstatus postgres

Ist alles ok, gibt das Terminal folgendes aus:

postgres:dataDirHasBeenInitialized = yes
postgres:PG_VERSION = "9.0.5"
postgres:dataDir = "/var/pgsql"
postgres:postgresIsResponding = yes
postgres:dataDirIsDirectory = yes
postgres:PGserverVersion = 90005
postgres:dataDirExists = yes
postgres:setStateVersion = 1
postgres:state = "RUNNING"

Jetzt noch den Profilmanager aus-, bezüglich einschalten und das Pushen sollte wieder gehen.

5 Antworten auf „Lion Server Profilmanager: Gerät wird nicht hinzugefügt“

  1. Hallo onurb

    Gäll es ist schon so, dass wir der elektronischen Datenwelt und im Fortschreiten der Übermittlungstechnik immer mehr erkennen müssen, dass eins und eins halt doch nicht immer zwei ergibt. Für mich sind das so Momente, wo ich zum Experten sage: “Ich ha gmeint …!”, dann werde ich von ihm (mit einem ironischen Unterton) aufgeklärt, dass es ein “ha gmeint!” in der heutigen Welt der Technik und Aufklärung nicht mehr gibt. Da gibt es nur noch Tatsachen, die man (gemäss Mark Twain) kennen muss und leider Gottes nicht verdrehen kann!

    Dazu habe ich unlängst einen Witz erzählt bekommen:

    “Aber, Herr Professor, das sind ja die gleichen Fragen, die Sie uns bei der letzten Klausur gestellt haben!” “Stimmt, aber die Antworten haben sich geändert!”

    Mit lieben Grüssen

    mutti

    mutti

  2. since updating to OS X Server 2.2 i can not connect to database.

    the command “sudo -u _devicemgr psql device_management” is not working.

    error: psql: FATAL: role “_devicemgr” does not exist

    how can i connect to database to delete an ICCID?

  3. Hi, die Antwort auf Udo’s Frage würde mich auch interessieren. Bin hier am Verzweifeln, weil ein Gerät sich nicht mehr administrieren läßt. Bin für jeden Tipp dankbar!

    Gruß

    Martin

  4. Hallo zusammen
    Ich bin der Sache ein wenig nach. Leider habe ich aus Zeitgründen nicht rascher reagieren können.
    Tatsächlich scheint das von mir angegebene Kommando nicht mehr zu funktionieren.
    Ich kann den Fehler bei mir jedoch nicht mehr provozieren: Ich habe versucht iOS-Geräte mit diversen SIM in verschiedenen Möglichkeiten zu kombinieren, um den Fehler zu provozieren. Das ist mir nicht gelungen. Das Gerät wurde anstandslos angenommen. Der Profilmanager tut, wie er soll. Aus diesem Grund kann ich den Fehler im jetzigen Zustand nicht reproduzieren. Sorry, aber da kann ich derzeit nicht weiterhelfen.

    Gruss benz

Kommentare sind geschlossen.