Java & MS SQL - mal ein Problem für einen Profi

speedy
Beiträge: 9028
Registriert: 22.10.2004 10:45:57
Wohnort: Stuttgart
Kontaktdaten:

#16 Re: Java & MS SQL - mal ein Problem für einen Profi

Beitrag von speedy »

fireball hat geschrieben:Funktionierts dem im SQL-Server Manager (ist der in der Express-Edition überhaupt dabei?)
In der Variante mit den "Advanced bla bla" ist der dabei. Dort funktioniert es.

EDIT: Na hoffentlich finde ich in der englischen Version die ganzen Optionen wieder, die ich alle zu Anfang einstellen mußte, bevor ich überhaupt Zugriff hatte.


MFG,
speedy
Zuletzt geändert von speedy am 13.02.2009 15:19:03, insgesamt 1-mal geändert.
Benutzeravatar
tracer
Operator
Operator
Beiträge: 63851
Registriert: 18.08.2004 18:50:03
Wohnort: Kollmar
Has thanked: 5 times
Been thanked: 4 times
Kontaktdaten:

#17 Re: Java & MS SQL - mal ein Problem für einen Profi

Beitrag von tracer »

adrock hat geschrieben:Die MS-Suppe schmeisst irgendeine deutsche Fehlermeldung raus und man darf sich dann erstmal überlegen, wonach man in der englischen KB suchen muss
Genau so sieht es aus.
Wir hatten damals die schwachsinnige Auflage, das Server in Deutsch aufzusetzen war, wenn verfügbar (Tja, die zuständige Stelle vom BWB sass/sitzt in Dresden ...). OK, mit Solaris, True64 und Co war das kein Faktor, aber bei den Windows Kisten schon echt ein pain in the ass.
speedy
Beiträge: 9028
Registriert: 22.10.2004 10:45:57
Wohnort: Stuttgart
Kontaktdaten:

#18 Re: Java & MS SQL - mal ein Problem für einen Profi

Beitrag von speedy »

Na da bin ich mal gespannt, ob euch die bereits bekannte Exception mit bereits bekanntem Verhalten in Englisch mehr bringt:

CREATE TABLE test1 ( Spalte INT CONSTRAINT pk_Spalte_1234537469127 PRIMARY KEY NOT NULL, Spalte2 INT IDENTITY(1,1) NOT NULL );

SET IDENTITY_INSERT test1 OFF;

INSERT INTO test1 (Spalte) VALUES (1);

java.sql.BatchUpdateException: Cannot update identity column 'Spalte2'.

Die Spalte wurde wiederum eingefügt. Ein neues Einfügen hat nicht funktioniert bei gleicher Meldung.

Was sich geändert hat - ich hab den deutschen SQL Server komplett runtergeschmissen und den englischen installiert.


MFG,
speedy
speedy
Beiträge: 9028
Registriert: 22.10.2004 10:45:57
Wohnort: Stuttgart
Kontaktdaten:

#19 Re: Java & MS SQL - mal ein Problem für einen Profi

Beitrag von speedy »

Was ich komisch finde - wenn ich im SQL Server Manager das Insert ausführe, aber mit einem Wert für den Primary Key, der schon vorhanden ist ... dann kommt natürlich eine Fehlermeldung und die Zeile wird nicht eingefügt. Aber der AutoIncrement wird trotzdem hoch gezählt. Wenn ich einen richtigen Wert angebe, dann wird die Zeile eingefügt, aber nach der Fehlermeldung dann z.B. nicht mit 2 als nächsten Wert, sondern mit 3 - aber es wird eingefügt "Query executed successfully".


MFG,
speedy
fireball

#20 Re: Java & MS SQL - mal ein Problem für einen Profi

Beitrag von fireball »

Ja das ist korrekt - soweit ich weiss verhalten sich andere DB-Systeme da genauso. Der neue Wert ist nicht abhängig vom höchsten Wert in der Spalte. Wenn Du die Tabelle leerst, müsste der nächste Wert benutzt werden, der "dran ist".
speedy
Beiträge: 9028
Registriert: 22.10.2004 10:45:57
Wohnort: Stuttgart
Kontaktdaten:

#21 Re: Java & MS SQL - mal ein Problem für einen Profi

Beitrag von speedy »

:banghead: :banghead: :banghead: :banghead: :banghead: :banghead: :banghead: :banghead: :banghead: :banghead: :banghead: :banghead: :banghead: :banghead:

Und wegen dem sch.... liege ich jetzt runde 11 Stunden zurück in meinem Source.

:oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops:

Nein ... ich mache kein Update, ich mache ein Insert .... und wenn ich ein Insert mache, mache ich kein Update - nein mache ich nicht - denn ich mache ja ein Insert.

Bei meinem Commit-Prozess gehe ich ganz ordentlich vor - erst alle Create Table, dann alle Inserts und dann alle Updates und dann die Delete's .... nein, er geht nicht in den Update, wenn er schon den Insert gebaut hat - nein nein nein - dafür hab ich ja meine Flags - und nein .... natürlich hat das DBCellData der AutoIncrement-Spalten/Cellen nicht auch ein Modified-Flag wie alle anderen - und nein - das wird natürlich nicht auf true gesetzt ... nein wirklich nicht .... und das Update nimmt ja nur Cellen, die das Flag auf true gesetzt haben .......

Was ich mit den gleichen Flags vorher auch immer anders gemacht habe ...... der scheiß Fehler hat mich jetzt 11 Stunden zurück geworfen.
:evil: :evil: :evil: :cry: :cry: :cry:

Eigentlich mag ich ja Pflanzen .... aber soviele hoch gewachsene auf einmal ... ich glaub, ich sollte meinen Pflanzendschungel abschaffen.


MFG,
speedy
speedy
Beiträge: 9028
Registriert: 22.10.2004 10:45:57
Wohnort: Stuttgart
Kontaktdaten:

#22 Re: Java & MS SQL - mal ein Problem für einen Profi

Beitrag von speedy »

Ich hasse meinen Job.

Aus meiner Erfahrung heraus wußte ich seit heute Nacht kurz nach 0, als das Problem aufgetreten ist, daß das nur irgendwas dämliches sein kann, was man so gerne übersieht.

Dauert es etwa nochmal weitere 14 Jahre Programmiererfahrung, bis man dann endlich auch sofort solche dämlichen Fehler sieht/findet ?


MFG,
speedy
Benutzeravatar
tracer
Operator
Operator
Beiträge: 63851
Registriert: 18.08.2004 18:50:03
Wohnort: Kollmar
Has thanked: 5 times
Been thanked: 4 times
Kontaktdaten:

#23 Re: Java & MS SQL - mal ein Problem für einen Profi

Beitrag von tracer »

speedy hat geschrieben:INSERT INTO test1 (Spalte) VALUES (1);
Du machst ein INSERT mit einem Wert für Spalte, hast aber Spalte2 als NOT NULL definiert???
speedy
Beiträge: 9028
Registriert: 22.10.2004 10:45:57
Wohnort: Stuttgart
Kontaktdaten:

#24 Re: Java & MS SQL - mal ein Problem für einen Profi

Beitrag von speedy »

tracer hat geschrieben:Du machst ein INSERT mit einem Wert für Spalte, hast aber Spalte2 als NOT NULL definiert???
Yep ? ... Spalte2 ist die AutoIncrement-Spalte - wird bei MS als "IDENTITY" definiert - und die muß man auch als NOT NULL definieren.


MFG,
speedy
Benutzeravatar
tracer
Operator
Operator
Beiträge: 63851
Registriert: 18.08.2004 18:50:03
Wohnort: Kollmar
Has thanked: 5 times
Been thanked: 4 times
Kontaktdaten:

#25 Re: Java & MS SQL - mal ein Problem für einen Profi

Beitrag von tracer »

speedy hat geschrieben:Spalte2 ist die AutoIncrement-Spalte - wird bei MS als "IDENTITY" definiert
MSSQL Server musste ich zum Glück nur am Laufen halten, nie damit arbeiten.

Ich finde es komisch, das man mit
speedy hat geschrieben:SET IDENTITY_INSERT test1 OFF;
etwas AN-schaltet.
speedy
Beiträge: 9028
Registriert: 22.10.2004 10:45:57
Wohnort: Stuttgart
Kontaktdaten:

#26 Re: Java & MS SQL - mal ein Problem für einen Profi

Beitrag von speedy »

tracer hat geschrieben:Ich finde es komisch, das man mit etwas AN-schaltet.
Ne - das ist anders gemeint, wenn ich es richtig kapiert habe - mit IDENTITY_INSERT auf ON kann man anschalten, daß man in die Spalte selbst auch eine Zahl einfügen kann - und eben mit OFF wieder abschalten. Irgendwie hatte ich auch in den letzten Tag(en) ne Fehlermeldung, daß es OFF sein muß, wenn man die AutoIncrement-Funktion haben möchte - bin mir grad aber nicht mehr sicher, wie der Zusammenhang wirklich war bei der Meldung.


MFG,
speedy
Benutzeravatar
tracer
Operator
Operator
Beiträge: 63851
Registriert: 18.08.2004 18:50:03
Wohnort: Kollmar
Has thanked: 5 times
Been thanked: 4 times
Kontaktdaten:

#27 Re: Java & MS SQL - mal ein Problem für einen Profi

Beitrag von tracer »

speedy hat geschrieben:und eben mit OFF wieder abschalten.
Setz es doch mal auf ON:

http://doc.ddart.net/mssql/sql70/set-set_19.htm
speedy
Beiträge: 9028
Registriert: 22.10.2004 10:45:57
Wohnort: Stuttgart
Kontaktdaten:

#28 Re: Java & MS SQL - mal ein Problem für einen Profi

Beitrag von speedy »

tracer hat geschrieben:Setz es doch mal auf ON:
Neee - wenn ich es auf ON setze, dann kann ich "per Hand" selbst definierte Zahlen einfügen - so wie es dort auch im Beispiel angegeben ist. Du hast die Zeilen 1, 2, 3 und 4 - jetzt löscht du die Zeile 3 ... jetzt hast du die Zeilen 1,2,4 - das findest aber blöd und möchtest lieber alle Zahlen durchgängig haben. Also setzt das jetzt auf ON und fügst per Hand die 3 ein und dan wieder auf OFF, damit das AutoIncrement funktioniert.


Aber nur mal so nebenbei gefragt - hast du da oben in dem Posting auch rauslesen können, daß ich den Fehler gefunden habe ? :oops: - bin mir da grad nicht so sicher. :)


MFG,
speedy
Benutzeravatar
tracer
Operator
Operator
Beiträge: 63851
Registriert: 18.08.2004 18:50:03
Wohnort: Kollmar
Has thanked: 5 times
Been thanked: 4 times
Kontaktdaten:

#29 Re: Java & MS SQL - mal ein Problem für einen Profi

Beitrag von tracer »

speedy hat geschrieben:hast du da oben in dem Posting auch rauslesen können, daß ich den Fehler gefunden habe ?
Nein.
Ich fand es "verwirrend", hatte gehofft, das irgendjemand nachfragt :)

Versuch es noch mal in einfach zu erklären :)
Benutzeravatar
tracer
Operator
Operator
Beiträge: 63851
Registriert: 18.08.2004 18:50:03
Wohnort: Kollmar
Has thanked: 5 times
Been thanked: 4 times
Kontaktdaten:

#30 Re: Java & MS SQL - mal ein Problem für einen Profi

Beitrag von tracer »

Mal für MS-SQL Laien: Wo/Wie wird da das autoincrement definiert?
Implizit durch einen INT, der PRIMARY KEY ist?

Oder hab ich was an den Augen? *g*
Antworten

Zurück zu „Klönschnack“