Skip to content

Doc sql_updates

Mairu edited this page Sep 24, 2012 · 2 revisions

Dummy der nicht angezeigt wird

Neues System für Git

Da mit der Verwendung von Git die Versionierung über Revisionsnummern nicht mehr möglich ist, habe ich das Updatesystem mal etwas angepasst. Im update/updates Ordner können php Dateien angelegt werden, die einen einmaligen Namen haben müssen, am besten verwendet man den Branchnamen (wenn der Branch einmalig ist) und eine Nummer, falls man mehrere Updates innerhalb eines Branches machen will.

z.B. issue63_1.php Darin kann man die Updatelogik für die Datenbank verfassen und eine Updatemeldung festhalten. Das macht man über

db_query('...');
if (...) {
    db_query('...');
}

$update = 'issue63_1';
$update_messages[$update][] = 'Meldung die interessant sein könnte zu dem Update';
$update_messages[$update][] = 'weitere Meldung zu diesem Update';

Alle ausgeführten Updates werden in der prefix_dev_dbupdates Tabelle vermerkt, so dass jedes Update nur einmal ausgeführt wird.

Altes System für SVN

Änderungen im Datenbankmodell

Mit dem neuen SQL-Updatesystem können Änderungen am Datenbankmodell schnell an alle Entwickler verteilt werden. Das System wurde mit Revision 86 eingeführt. Jetzt sollte euer ilch auch datenbanktechnisch immer auf dem neuesten Stand sein.

Wie funktioniert das?

Solange du selber keine Änderungen an der Datenbank vornehmen willst, solltest du davon gar nichts merken. Immer wenn du das ilchScript (also die index.php oder die admin.php) aufrufst, wird folgendes vorgenommen:

 1. das Skript "update.php" im Ordner "updates" wird aufgerufen. Dieses holt sich alle Dateien "revision_xxxxx" aus dem Unterordner "revisions"
 2. In der Tabelle 'prefix_config' befindet sich der Schlüssel "Revision"
 3. Dieser Schlüssel zeigt an, auf welcher Version sich dein Ilch befindet.
 4. Jetzt werden der Reihe nach die Dateien includet und aufgerufen. Jede dieser Dateien nimmt Änderungen am Datenmodell vor.
 5. Anschließend wird deine Revision auf die letzte Datei gesetzt, die aufgerufen wurde.
 6. Bist du also am Anfang auf Revision 36, und es gibt 2 Dateien, revision_37.php und revision_38.php, werden diese zwei Dateien aufgerufen und anschließend deine Versionsnummer überschrieben.

Wie kann ich das selber machen?

Einfach im Ordner "revision" selbst eine revision_XXXX.php definieren. Am besten, die revisionsnummer stimmt mit der aktuellen svn-revision überein. Dann können die Änderungen nachverfolgt werden.

Und wenn mal etwas schief geht?

  1. Einem Entwickler den Fehler melden oder den Fehler selbst an der entsprechenden revision_XXXX.php beheben.
  2. Im Adminmenü -> Allgemeine Optionen deine Revisionsnummer zurücksetzen und darauf hoffen, dass es dieses mal funktioniert.

Viel Spaß bei der Entwicklung!