X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=doc%2Fhtml%2Fch04s03.html;h=d926661d861028cd3dc0bf9433a424951f3c6d91;hb=2c8e8f143645ac3ce6f69ca7aaee479cda75a6f7;hp=bef5e5ded26bc62eddefe1540259efe01d37f3b9;hpb=0e43d3cfea2cfdb938490c8221048b235f754fd3;p=kivitendo-erp.git diff --git a/doc/html/ch04s03.html b/doc/html/ch04s03.html index bef5e5ded..d926661d8 100644 --- a/doc/html/ch04s03.html +++ b/doc/html/ch04s03.html @@ -1,12 +1,20 @@ - 4.3. SQL-Upgradedateien

4.3. SQL-Upgradedateien

4.3.1. Einführung

Datenbankupgrades werden über einzelne Upgrade-Scripte gesteuert, die sich im Verzeichnis sql/Pg-upgrade2 - befinden. In diesem Verzeichnis muss pro Datenbankupgrade eine Datei existieren, die neben den eigentlich auszuführenden SQL- oder - Perl-Befehlen einige Kontrollinformationen enthält.

Kontrollinformationen definieren Abhängigkeiten und Prioritäten, sodass Datenbankscripte zwar in einer sicheren Reihenfolge - ausgeführt werden (z.B. darf ein ALTER TABLE erst ausgeführt werden, wenn die Tabelle mit CREATE - TABLE angelegt wurde), diese Reihenfolge aber so flexibel ist, dass man keine Versionsnummern braucht.

kivitendo merkt sich dabei, welches der Upgradescripte in sql/Pg-upgrade2 bereits durchgeführt wurde und - führt diese nicht erneut aus. Dazu dient die Tabelle "schema_info", die bei der Anmeldung automatisch angelegt - wird.

4.3.2. Format der Kontrollinformationen

Die Kontrollinformationen sollten sich am Anfang der jeweiligen + 4.3. SQL-Upgradedateien

4.3. SQL-Upgradedateien

4.3.1. Einführung

Datenbankupgrades werden über einzelne Upgrade-Scripte + gesteuert, die sich im Verzeichnis + sql/Pg-upgrade2 befinden. In diesem Verzeichnis + muss pro Datenbankupgrade eine Datei existieren, die neben den + eigentlich auszuführenden SQL- oder Perl-Befehlen einige + Kontrollinformationen enthält.

Kontrollinformationen definieren Abhängigkeiten und Prioritäten, + sodass Datenbankscripte zwar in einer sicheren Reihenfolge ausgeführt + werden (z.B. darf ein ALTER TABLE erst ausgeführt + werden, wenn die Tabelle mit CREATE TABLE angelegt + wurde), diese Reihenfolge aber so flexibel ist, dass man keine + Versionsnummern braucht.

kivitendo merkt sich dabei, welches der Upgradescripte in + sql/Pg-upgrade2 bereits durchgeführt wurde und + führt diese nicht erneut aus. Dazu dient die Tabelle + "schema_info", die bei der Anmeldung automatisch + angelegt wird.

4.3.2. Format der Kontrollinformationen

Die Kontrollinformationen sollten sich am Anfang der jeweiligen Upgradedatei befinden. Jede Zeile, die Kontrollinformationen enthält, hat dabei das folgende Format:

Für SQL-Upgradedateien:

-- @key: value

Für Perl-Upgradedateien:

# @key: value

Leerzeichen vor "value" werden entfernt.

Die folgenden Schlüsselworte werden verarbeitet:

@@ -21,14 +29,18 @@ erlaubt und sollten stattdessen mit Unterstrichen ersetzt werden.

charset -

Empfohlen. Gibt den Zeichensatz an, in dem das Script geschrieben wurde, z.B. "UTF-8". Aus - Kompatibilitätsgründen mit alten Upgrade-Scripten wird bei Abwesenheit des Tags für SQL-Upgradedateien der Zeichensatz - "ISO-8859-15" angenommen. Perl-Upgradescripte hingegen müssen immer in UTF-8 encodiert sein und sollten - demnach auch ein "use utf8;" enthalten.

+

Empfohlen. Gibt den Zeichensatz an, in dem das Script + geschrieben wurde, z.B. "UTF-8". Aus + Kompatibilitätsgründen mit alten Upgrade-Scripten wird bei + Abwesenheit des Tags für SQL-Upgradedateien der Zeichensatz + "ISO-8859-15" angenommen. Perl-Upgradescripte + hingegen müssen immer in UTF-8 encodiert sein und sollten + demnach auch ein "use utf8;" + enthalten.

description

Benötigt. Eine Beschreibung, was in diesem Update passiert. Diese wird dem Benutzer beim eigentlichen - Datenbankupdate angezeigt. Während der Tag in englisch gehalten + Datenbankupdate angezeigt. Während der Tag in Englisch gehalten sein sollte, sollte die Beschreibung auf Deutsch erfolgen.

depends @@ -56,16 +68,24 @@ ignore

Optional. Falls der Wert auf 1 (true) steht, wird das Skript bei der Anmeldung ignoriert und entsprechend nicht - ausgeführt.

4.3.3. Format von in Perl geschriebenen Datenbankupgradescripten

In Perl geschriebene Datenbankscripte werden nicht einfach so ausgeführt sondern müssen sich an gewisse Konventionen - halten. Dafür bekommen sie aber auch einige Komfortfunktionen bereitgestellt.

Ein Upgradescript stellt dabei eine vollständige Objektklasse dar, die vom Elternobjekt - "SL::DBUpgrade2::Base" erben und eine Funktion namens "run" zur Verfügung stellen muss. Das - Script wird ausgeführt, indem eine Instanz dieser Klasse erzeugt und darauf die erwähnte "run" aufgerufen - wird.

Zu beachten ist, dass sich der Paketname der Datei aus dem Wert für "@tag" ableitet. Dabei werden alle - Zeichen, die in Paketnamen ungültig wären (gerade Bindestriche), durch Unterstriche ersetzt. Insgesamt sieht der Paketname wie folgt - aus: "SL::DBUpgrade2::tag".

Welche Komfortfunktionen zur Verfügung stehen, erfahren Sie in der Perl-Dokumentation zum oben genannten Modul; aufzurufen mit - "perldoc SL/DBUpgrade2/Base.pm".

Ein Mindestgerüst eines gültigen Perl-Upgradescriptes sieht wie folgt aus:

# @tag: beispiel-upgrade-file42
+              ausgeführt.

4.3.3. Format von in Perl geschriebenen + Datenbankupgradescripten

In Perl geschriebene Datenbankscripte werden nicht einfach so + ausgeführt sondern müssen sich an gewisse Konventionen halten. Dafür + bekommen sie aber auch einige Komfortfunktionen bereitgestellt.

Ein Upgradescript stellt dabei eine vollständige Objektklasse + dar, die vom Elternobjekt "SL::DBUpgrade2::Base" + erben und eine Funktion namens "run" zur Verfügung + stellen muss. Das Script wird ausgeführt, indem eine Instanz dieser + Klasse erzeugt und darauf die erwähnte "run" + aufgerufen wird.

Zu beachten ist, dass sich der Paketname der Datei aus dem Wert + für "@tag" ableitet. Dabei werden alle Zeichen, die + in Paketnamen ungültig wären (gerade Bindestriche), durch Unterstriche + ersetzt. Insgesamt sieht der Paketname wie folgt aus: + "SL::DBUpgrade2::tag".

Welche Komfortfunktionen zur Verfügung stehen, erfahren Sie in + der Perl-Dokumentation zum oben genannten Modul; aufzurufen mit + "perldoc SL/DBUpgrade2/Base.pm".

Ein Mindestgerüst eines gültigen Perl-Upgradescriptes sieht wie + folgt aus:

# @tag: beispiel-upgrade-file42
 # @description: Ein schönes Beispielscript
-# @depends: release_3_0_0
+# @depends: release_3_1_0
 package SL::DBUpgrade2::beispiel_upgrade_file42;
 
 use strict;