Projekt

Allgemein

Profil

Herunterladen (10,9 KB) Statistiken
| Zweig: | Markierung: | Revision:
f8309cb7 Moritz Bunkus
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>4.3. SQL-Upgradedateien</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="Lx-Office: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch04.html" title="Kapitel 4. Entwicklerdokumentation"><link rel="prev" href="ch04s02.html" title="4.2. Entwicklung unter FastCGI"><link rel="next" href="ch04s04.html" title="4.4. Translations and languages"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">4.3. SQL-Upgradedateien</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch04s02.html">Zur?ck</a>&nbsp;</td><th width="60%" align="center">Kapitel 4. Entwicklerdokumentation</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch04s04.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="4.3. SQL-Upgradedateien"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="db-upgrade-files"></a>4.3. SQL-Upgradedateien</h2></div></div></div><div class="sect2" title="4.3.1. Einf?hrung"><div class="titlepage"><div><div><h3 class="title"><a name="db-upgrade-files.introduction"></a>4.3.1. Einf?hrung</h3></div></div></div><p>
Der alte Mechanismus f?r SQL-Upgradescripte, der auf einer Versionsnummer beruht und dann in sql/Pg-upgrade nach einem Script f?r
diese Versionsnummer sucht, schr?nkt sehr ein, z.B. was die parallele Entwicklung im stable- und unstable-Baum betrifft.
</p><p>
Dieser Mechanismus wurde f?r Lx-Office 2.4.1 deutlich erweitert. Es werden weiterhin alle Scripte aus sql/Pg-upgrade
ausgef?hrt. Zus?tzlich gibt es aber ein zweites Verzeichnis, sql/Pg-upgrade2. In diesem Verzeichnis muss pro Datenbankupgrade eine
Datei existieren, die neben den eigentlich auszuf?hrenden SQL- oder Perl-Befehlen einige Kontrollinformationen enth?lt.
</p><p>
Neu sind die Kontrollinformationen, die Abh?ngigkeiten und Priorit?ten definieren k?nnen werden, 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 mehr braucht.
</p><p>
Lx-Office 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.
</p></div><div class="sect2" title="4.3.2. Format der Kontrollinformationen"><div class="titlepage"><div><div><h3 class="title"><a name="db-upgrade-files.format"></a>4.3.2. Format der Kontrollinformationen</h3></div></div></div><p>
Die Kontrollinformationen sollten sich am Anfang der jeweiligen Upgradedatei befinden. Jede Zeile, die Kontrollinformationen enth?lt,
hat dabei das folgende Format:
</p><p>
F?r SQL-Upgradedateien:
</p><pre class="programlisting">-- @key: value</pre><p>
F?r Perl-Upgradedateien:
</p><pre class="programlisting"># @key: value</pre><p>
Leerzeichen vor "<code class="varname">value</code>" werden entfernt.
</p><p>
Die folgenden Schl?sselworte werden verarbeitet:
</p><div class="variablelist"><dl><dt><span class="term">
<code class="varname">tag</code>
</span></dt><dd><p>
Wird zwingend ben?tigt. Dies ist der "Name" des Upgrades. Dieser "tag" kann von anderen Kontrolldateien in ihren Abh?ngigkeiten
verwendet werden (Schl?sselwort "<code class="varname">depends</code>"). Der "tag" ist auch der Name, der in der Datenbank eingetragen wird.
</p><p>
Normalerweise sollte die Kontrolldatei genau so hei?en wie der "tag", nur mit der Endung ".sql" bzw. "pl".
</p><p>
Ein Tag darf nur aus alphanumerischen Zeichen sowie den Zeichen _ - ( ) bestehen. Insbesondere sind Leerzeichen nicht erlaubt und
sollten stattdessen mit Unterstrichen ersetzt werden.
</p></dd><dt><span class="term">
<code class="varname">charset</code>
</span></dt><dd><p>
Empfohlen. Gibt den Zeichensatz an, in dem das Script geschrieben wurde, z.B. "<code class="literal">UTF-8</code>". Aus
Kompatibilit?tsgr?nden mit alten Upgrade-Scripten wird bei Abwesenheit des Tags der Zeichensatz "<code class="literal">ISO-8859-15</code>"
angenommen.
</p></dd><dt><span class="term">
<code class="varname">description</code>
</span></dt><dd><p>
Ben?tigt. Eine Beschreibung, was in diesem Update passiert. Diese wird dem Benutzer beim eigentlichen Datenbankupdate
angezeigt. W?hrend der Tag in englisch gehalten sein sollte, sollte die Beschreibung auf Deutsch erfolgen.
</p></dd><dt><span class="term">
<code class="varname">depends</code>
</span></dt><dd><p>
Optional. Eine mit Leerzeichen getrennte Liste von "tags", von denen dieses Upgradescript abh?ngt. Lx-Office stellt sicher, dass
die in dieser Liste aufgef?hrten Scripte bereits durchgef?hrt wurden, bevor dieses Script ausgef?hrt wird.
</p><p>
Abh?ngigkeiten werden rekursiv betrachtet. Wenn also ein Script "b" existiert, das von ?nderungen in "a" abh?ngt, und eine neue
Kontrolldatei f?r "c" erstellt wird, die von ?nderungen in "a" und "b" abh?ngt, so gen?gt es, in "c" nur den Tag "b" als
Abh?ngigkeit zu definieren.
</p><p>
Es ist nicht erlaubt, sich selbst referenzierende Abh?ngigkeiten zu definieren (z.B. "a" -&gt; "b",
"b" -&gt; "c" und "c" -&gt; "a").
</p></dd><dt><span class="term">
<code class="varname">priority</code>
</span></dt><dd><p>
Optional. Ein Zahlenwert, der die Reihenfolge bestimmt, in der Scripte ausgef?hrt werden, die die gleichen Abh?ngigkeitstiefen
besitzen. Fehlt dieser Parameter, so wird der Wert 1000 benutzt.
</p><p>
Dies ist reine Kosmetik. F?r echte Reihenfolgen muss "depends" benutzt werden. Lx-Office sortiert die auszuf?hrenden Scripte
zuerst nach der Abh?ngigkeitstiefe (wenn "z" von "y" abh?ngt und "y" von "x", so hat "z" eine Abh?ngigkeitstiefe von 2, "y" von 1
und "x" von 0. "x" w?rde hier zuerst ausgef?hrt, dann "y", dann "z"), dann nach der Priorit?t und bei gleicher Priorit?t
alphabetisch nach dem "tag".
0f1fb486 Jan Büren
</p></dd><dt><span class="term">
<code class="varname">ignore</code>
</span></dt><dd><p>
Optional. Falls der Wert auf 1 (true) steht, wird das Skript bei der Anmeldung ignoriert und entsprechend nicht ausgef?hrt.
f8309cb7 Moritz Bunkus
</p></dd></dl></div></div><div class="sect2" title="4.3.3. Hilfsscript dbupgrade2_tool.pl"><div class="titlepage"><div><div><h3 class="title"><a name="db-upgrade-files.dbupgrade-tool"></a>4.3.3. Hilfsscript dbupgrade2_tool.pl</h3></div></div></div><p>
Um die Arbeit mit den Abh?ngigkeiten etwas zu erleichtern, existiert ein Hilfsscript namens
"<code class="filename">scripts/dbupgrade2_tool.pl</code>". Es muss aus dem Lx-Office-ERP-Basisverzeichnis heraus aufgerufen werden. Dieses
Tool liest alle Datenbankupgradescripte aus dem Verzeichnis <code class="filename">sql/Pg-upgrade2</code> aus. Es benutzt daf?r die gleichen
Methoden wie Lx-Office selber, sodass alle Fehlersituationen von der Kommandozeile ?berpr?ft werden k?nnen.
</p><p>
Wird dem Script kein weiterer Parameter ?bergeben, so wird nur eine ?berpr?fung der Felder und Abh?ngigkeiten vorgenommen. Man kann
sich aber auch Informationen auf verschiedene Art ausgeben lassen:
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Listenform: "<span class="command"><strong>./scripts/dbupgrade2_tool.pl --list</strong></span>"</p><p>
Gibt eine Liste aller Scripte aus. Die Liste ist in der Reihenfolge sortiert, in der Lx-Office die Scripte ausf?hren w?rde. Es
werden neben der Listenposition der Tag, die Abh?ngigkeitstiefe und die Priorit?t ausgegeben.
</p></li><li class="listitem"><p>Baumform: "<span class="command"><strong>./scripts/dbupgrade2_tool.pl --tree</strong></span>"</p><p>
Listet alle Tags in Baumform basierend auf den Abh?ngigkeiten auf. Die "Wurzelknoten" sind dabei die Scripte, von denen keine
anderen abh?ngen. Die Unterknoten sind Scripte, die beim ?bergeordneten Script als Abh?ngigkeit eingetragen sind.
</p></li><li class="listitem"><p><a name="db-upgrade-files.dbupgrade-tool.reverse-tree"></a>Umgekehrte Baumform: "<span class="command"><strong>./scripts/dbupgrade2_tool.pl --rtree</strong></span>"</p><p>
Listet alle Tags in Baumform basierend auf den Abh?ngigkeiten auf. Die "Wurzelknoten" sind dabei die Scripte mit der geringsten
Abh?ngigkeitstiefe. Die Unterknoten sind Scripte, die das ?bergeordnete Script als Abh?ngigkeit eingetragen haben.
</p></li><li class="listitem"><p>Baumform mit Postscriptausgabe: "<span class="command"><strong>./scripts/dbupgrade2_tool.pl --graphviz</strong></span>"</p><p>
Ben?tigt das Tool "<span class="command"><strong>graphviz</strong></span>", um mit seiner Hilfe die <a class="link" href="ch04s03.html#db-upgrade-files.dbupgrade-tool.reverse-tree">umgekehrte Baumform</a> in eine Postscriptdatei namens
"<code class="filename">db_dependencies.ps</code>" auszugeben. Dies ist vermutlich die ?bersichtlichste Form, weil hierbei jeder Knoten nur
einmal ausgegeben wird. Bei den Textmodusbaumformen hingegen k?nnen Knoten und all ihre Abh?ngigkeiten mehrfach ausgegeben werden.
</p></li><li class="listitem"><p>
Scripte, von denen kein anderes Script abh?ngt: "<span class="command"><strong>./scripts/dbupgrade2_tool.pl --nodeps</strong></span>"
</p><p>
Listet die Tags aller Scripte auf, von denen keine anderen Scripte abh?ngen.
</p></li></ul></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch04s02.html">Zur?ck</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch04.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch04s04.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">4.2. Entwicklung unter FastCGI&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;4.4. Translations and languages</td></tr></table></div></body></html>