Hallo an alle und an Thomas, leider nochmal das Thema ORACLE-DB und speziell zur automatischen Erzeugung der ID in der DB-Tabelle. Kurz noch zur Info, im April hat Thomas u.a. diesen Tipp gegeben: >>>>> Zum unterschiedlichen Verhalten der QGIS-Installationen: In QGIS selbst könnte man in der Konsole schauen, was als ORACLE_HOME und TNS_ADMIN hinterlegt ist und ob da die tnsnames.ora angesprochen wird, die benutzt werden sollte: import os print(os.environ['ORACLE_HOME']) print(os.environ['TNS_ADMIN']) <<<<<
Ergebnis hier zu: print(os.environ['TNS_ADMIN']) = \\OracleConf\DATEN\pub\OracleConf\ORA print(os.environ['ORACLE_HOME']) = Traceback (most recent call last): File "C:\PROGRA~1\QGIS3~1.16\apps\Python37\lib\code.py", line 90, in runcode exec(code, self.locals) File "<input>", line 1, in <module> File "<string>", line 2, in <module> File "C:\PROGRA~1\QGIS3~1.16\apps\Python37\lib\os.py", line 678, in __getitem__ raise KeyError(key) from None KeyError: 'ORACLE_HOME' Das nur nochmal zur Info an Thomas, hatte ich wohl damals nicht mehr erwähnt. Nun zurück zur ID, in der verwendeten DB-Tabelle gibt es vier Spalten mit der Bedingung 'NOT NULL'. Bei zwei Attributspalten sind diese recht einfach, und werden mit entsprechenden QGIS-Vorgaben abgearbeitet. In die vierte DB-Spalte, 'ID-KOPIE' wird die DB-Tabellen 'ID' nochmal hinein kopiert, dies ist für die derzeitig verwendete CAD/GIS-Anwendung wohl nötig. Auch dies wird über einen Vorgabewert in QGIS gelöst, obwohl es dafür auch einen Trigger in der ORACLE-DB gibt. Als Umgehungslösung wird derzeit aber auch die Erzeugung der 'ID' mit einem Eintrag im Feld 'Vorgabewert' durchgeführt. Eintrag: CASE WHEN "ID" is NULL THEN maximum( "ID")+1 ELSE "ID" END Das ist natürlich keine gute Lösung. Ist der o.g. Vorgabewert nicht gesetzt, bekomme ich diese Fehlermeldung: >>>>>>>>> Konnte Änderungen am Layer FL_NUTZUNG_MULTI nicht festschreiben Fehler: FEHLER: Objekt nicht hinzugefügt. Datenanbieterfehler: Oracle-Fehler beim Attributhinzufügen: Oracle-Fehler: Konnte Objekt -27 nicht einfügen SQL: ORA-20001: Primärschlüssel nicht gesetzt! Ids: -999999 / -999999 ORA-06512: in "FPLAN.FL_NUTZUNG_B_IUD", Zeile 183 ORA-04088: Fehler bei der Ausführung von Trigger 'FPLAN.FL_NUTZUNG_B_IUD' Konnte Anweisung nicht ausführen Fehler: INSERT INTO "FPLAN"."FL_NUTZUNG"("GEOMETRIE","ID","NUTZUNG","NUTZUNG_LV","FL_CODE","BEMERKUNG","AREA","ALTLAST","AL_NAME", "AFM","GR_RING","BN","BRACHE","DB_FC_1","DB_FC_2","DB_FC_TEXT","KG_NR","KG_BEMERKUNG","KONTROLLE","ST_LA_SA","OS_LSA","FS_LSA", "SO_NUTZUNG","CREATOR","CREATED","EDITOR","EDITED","ID_KOPIE","BEIPLANDARSTELLUNG","LSG","NSG","KG_RNAHME","BPLANNR","MWE", "DB_FC_TEXT_2") VALUES (:a,:bb,:bc,:bd,:be,:bf,:bg,:bh,:bi,:bj,:bk,:bl,:bm,:bn,:bo,:bp,:cba,:cbb,:cbc,:cbd,:cbe,:cbf,:cbg,:cbh, :cbi,:cbj,:cbk,:cbl,:cbm,:cbn,:cbo,:cbp,:cca,:ccb,:ccc) <<<<<<<<<< So weit nochmal der Stand hier, bei der Nutzung einer ORACLE-DB mit QGIS. Nächste Woche gibt es ein Gespräch beim DB-Betreiber. Darum wollte ich auch mal Fragen, ob es vielleicht spezielle Punkte gibt die Datenbankseitig für die Nutzung mit QGIS zu beachten sind. Scheinbar reagieren ja die ORACLE-Trigger nicht auf die 'QGIS' Rückmeldungen. So genug Text, Gruß Peter Verwendete QGIS-Versionen: 3.16.11 und 3.18.3 -- .................................................................... FOSSGIS Veranstaltungen https://www.fossgis.de/news/fossgis-events/ FOSSGIS e.V, der Verein zur Förderung von Freier Software aus dem GIS-Bereich und Freier Geodaten! https://www.fossgis.de/ https://twitter.com/FOSSGIS_Verein ____________________________________________________________________ FOSSGIS-Talk-Liste mailing list FOSSGIS-Talk-Liste@fossgis.de https://lists.fossgis.de/mailman/listinfo/fossgis-talk-liste