Search the FirstSpirit Knowledge Base
Hallo,
wir haben ein Datenbank Schemata angelegt.
Hier haben wir eine Tabelle mit mehreren Spalten.
Bei einer Spalte hat sich nun der Datentyp geändert.
Statt xs:integer soll es nun ein xs:string werden.
Wie ändert man dies, ohne das es in der Oracle DB als neue Spalte angelegt wird?
Vielen Dank
Hallo Herr Wörner,
die Frage verstehe ich hoffentlich falsch
Wenn FirstSpirit eine Spalte vom Typ string verwenden würde und in der Datenbank der Typ integer stehe würde, könnten die Daten nicht sicher gespeichert werden.
Also gehe ich mal von dem folgenden Szenario aus:
- Sie haben die entsprechende Spalte in der Dtaenbank geändert (von integer auf string)
- Sie wollen nun, dass FirstSpirit einen kompatiblen Datentyp verwendet.
Wenn die Schema Synchronisation aktiviert ist, würde eine neue Spalte angelegt, sobald Sie das Schema bearbeiten und speichern [und zwar vom Typ integer, da dieser Typ noch im Schema gespeichert ist und der Typ inkompatibel mit dem Spaltentyp in der Datenbank ist].
Lösung:
- Bearbeiten Sie das Schema
- Rufen Sie über das Kontextmenü Extern Bearbeiten/XML Schema auf
- Suchen Sie die entsprechende Spalte und ändern Sie deren Typ kompatibel ab
- Speichern Sie das extern bearbeitete Schema und übernehmen Sie die Änderungen (sofern Autosave deaktiviert wurde)
- Wenn vorher der Typ in der Datenbank entsprechend geändert wurde, so dass nun Schema und Datenbank wieder kompatibel sind wird beim Speichern keine neue Spalte angelegt werden.
Das Problem hierbei ist die Kompatibilität. Je nachdem, wieviele Zeichen für die Spalte im Schema erlaubt sind, wird ein anderer Typ in der Datenbank benötigt.
Beispiel für den Typ string:
<xs:element dbName="<SPALTENNAME IN DER DB>" javaType="java.lang.String" length="255" name="<FirstSpirit NAME DER SPALTE>" nullable="1" type="xs:string"/>
Wenn das Schema nicht synchronisierbar ist (Einstellung in den Projekteigenschaften beim Einbinden der entsprechenden Datenbank), wird nicht versucht, die Spalte in der Datenbank beim Speichern zu synchronisieren. Dafür bekommen Sie aber Fehler beim Speichern des Datensatzes, wenn der Spaltentyp in der Datenbank nicht passt.
Viele Grüsse aus Dortmund,
Holger Höbbel
Hallo Herr Wörner,
die Frage verstehe ich hoffentlich falsch
Wenn FirstSpirit eine Spalte vom Typ string verwenden würde und in der Datenbank der Typ integer stehe würde, könnten die Daten nicht sicher gespeichert werden.
Also gehe ich mal von dem folgenden Szenario aus:
- Sie haben die entsprechende Spalte in der Dtaenbank geändert (von integer auf string)
- Sie wollen nun, dass FirstSpirit einen kompatiblen Datentyp verwendet.
Wenn die Schema Synchronisation aktiviert ist, würde eine neue Spalte angelegt, sobald Sie das Schema bearbeiten und speichern [und zwar vom Typ integer, da dieser Typ noch im Schema gespeichert ist und der Typ inkompatibel mit dem Spaltentyp in der Datenbank ist].
Lösung:
- Bearbeiten Sie das Schema
- Rufen Sie über das Kontextmenü Extern Bearbeiten/XML Schema auf
- Suchen Sie die entsprechende Spalte und ändern Sie deren Typ kompatibel ab
- Speichern Sie das extern bearbeitete Schema und übernehmen Sie die Änderungen (sofern Autosave deaktiviert wurde)
- Wenn vorher der Typ in der Datenbank entsprechend geändert wurde, so dass nun Schema und Datenbank wieder kompatibel sind wird beim Speichern keine neue Spalte angelegt werden.
Das Problem hierbei ist die Kompatibilität. Je nachdem, wieviele Zeichen für die Spalte im Schema erlaubt sind, wird ein anderer Typ in der Datenbank benötigt.
Beispiel für den Typ string:
<xs:element dbName="<SPALTENNAME IN DER DB>" javaType="java.lang.String" length="255" name="<FirstSpirit NAME DER SPALTE>" nullable="1" type="xs:string"/>
Wenn das Schema nicht synchronisierbar ist (Einstellung in den Projekteigenschaften beim Einbinden der entsprechenden Datenbank), wird nicht versucht, die Spalte in der Datenbank beim Speichern zu synchronisieren. Dafür bekommen Sie aber Fehler beim Speichern des Datensatzes, wenn der Spaltentyp in der Datenbank nicht passt.
Viele Grüsse aus Dortmund,
Holger Höbbel
Vielen Dank für Ihre Antwort.
Wie komme ich denn an das Kontextmenü Extern Bearbeiten/XML Schema ??
Hallo Herr Wörner,
mit einem Rechtsklick auf den Schema Knoten, den Sie zuvor in den bearbeitungsmodus versetzt haben müssen.
Viele Grüsse aus Dortmund,
Holger Höbbel
Es kann sein, das dies nur (Projekt-)Admins zur Verfügung steht, das habe ich nicht kontrolliert. Steht aber in der Doku
Habe es gefunden.
Vielen Dank!
Konnte mein Problem damit lösen!