seeseekey.net - Invictus Deus Ex Machina

In einer MySQL-Datenbank ändert man selten viele Daten auf einmal. Allerdings kommt dies trotz allem ab und an vor. Ein solcher Anwendungsfall wäre z.B. die Änderung einer Zeichenkette innerhalb einer Tabelle. Für MySQL gibt es hierfür die SQL-Funktion REPLACE, welche dies ermöglicht. Im Beispiel könnte das so aussehen:

UPDATE names SET forename = REPLACE(forename, 'Anja', 'Anne')

In diesem Beispiel wird in der Tabelle names das Feld forename bearbeitet. Dabei wird jedes Auftreten von Anja durch Anne ersetzt.

In einer Datenbanktabelle verfügt man im Normalfall über ein Feld, welches als Primärschlüssel fungiert. Dieses Feld ist dabei in den meisten Fällen als Integer mit einer Autoinkrement-Funktion ausgelegt. Unter Umständen kann es passieren, das man diese ID neu von 1 an vergeben möchten, also ein sogenanntes Renumbering durchführen möchte. Mittels SQL kann man das ganze dabei wie folgt erreichen:

SET @a = 0;
UPDATE tabellenName SET ID = (@a := @a +1);
ALTER TABLE tabellenName  AUTO_INCREMENT = 1;

Bei der Ausführung dieser Befehle wird das Feld ID ab 1 neu durchnummeriert und der Autoinkrement-Index auf den entsprechenden Wert gesetzt.

Eine Multisite-Wordpress-Installation ist ein WordPress welches verschiedene Domains mit unterschiedlichen Inhalten aka Webseiten bespielt. Unter Umständen kann es vorkommen, das man diese WordPress-Installation von einer Domain auf eine andere Domain umziehen möchte. Leider lässt sich die Domain, auf welcher das Multisite-Wordpress installiert wurde, nicht einfach ändern.

Die Netzwerkeinstellungen einer WordPress Multisite Installation

Die Netzwerkeinstellungen einer WordPress Multisite Installation

Stattdessen muss man die Änderungen an der Datenbank vornehmen. Im ersten Schritt sollte ein Backup der Datenbank erzeugt werden. In der resultierenden SQL-Datei werden dann alle Erwähnungen der alten Domain durch die neue Domain ersetzt. Diese geänderte SQL-Datei kann dann in eine neue oder in die bestehende (nachdem die alten Tabellen vorher gelöscht wurden) Datenbank importiert werden. Als letzter Schritt muss die wp-config.php angepasst werden. Dort findet sich der Punkt:

define('DOMAIN_CURRENT_SITE', 'example.com');

An diesem Punkt muss die neue Domain eingetragen werden. Eventuell muss man an dieser Stelle auch die Zugangsdaten für die Datenbank ändern, wenn man die SQL-Datei in eine neue Datenbank importiert hat.

Bei einer ownCloud-Instanz welche schon einige Betriebsstunden auf dem Buckel hat, kann es zu einem unschönen Effekt kommen. Beim Versuch den Papierkorb über die Funktion “Gelöschte Dateien” zu leeren, versucht ownCloud alle Dateien aufzulisten, was allerdings nicht gelingt. Der Browser friert ein und das Leeren des Papierkorbes ist nicht möglich.

Der Button um die gelöschten Dateien aufzurufen

Der Button um die gelöschten Dateien aufzurufen

Auch wenn das Leeren des Papierkorber nach Meinung der ownCloud-Entwickler nicht notwendig ist, da die Dateien nach einer Weile weggeworfen werden, sollte es trotzdem eine Lösung geben um den Papierkorb manuell zu leeren. Ein Workarround ist es den Papierkorb direkt zu löschen in dem man das Verzeichnis “owncloud/data/username/files_trashbin/ löscht. Anschließend müssen noch zwei Tabellen in der Datenbank bereinigt werden:

TRUNCATE TABLE oc_files_trashsize;
TRUNCATE TABLE oc_files_trash;

Eine weitere Möglichkeit diese Problematik zu entschärfen, ist es die Vorhaltezeit von gelöschten Dateien von 180 Tagen auf 30 Tage zu reduzieren. Dazu öffnet man die config.php Datei welche im config-Ordner zu finden ist und trägt folgenden Wert ein:

'trashbin_retention_obligation' => 30,

Damit wird verhindert das sich zu viele Dateien im Papierkorb ansammeln und das Problem deutlich entschärft.

Manchmal benötigt man eine MySQL Kommandozeile, hat aber kein “phpmyadmin” zur Verfügung. Für einen solchen Fall wäre es schön wenn man eine kleine Anwendung hätte welche dieses Problem löst. Genau hier setzt die PHP Anwendung “Adminer” an. Dabei handelt es sich sozusagen um eine “phpmyadmin” Minimalversion.

SQL-Query Ansicht im Adminer

Das schöne am Adminer ist das er nur aus einer Datei besteht und so unkompliziert “installiert” werden kann. Zu finden ist das ganze unter http://www.adminer.org.

Auf der Suche nach der Antwort auf die Frage wie man die Struktur eine Tabelle unter Sqlite ermitteln kann, bin ich über die Seite http://sqlzoo.net/ gestolpert. Dabei handelt es sich um eine Seite welche erklärt wie SQL sowie bestimmte andere Sachen (z.B. die Abfrage von Metadaten) funktionieren. Und das nicht nur für ein Datenbanksystem sondern für SQL Server, Oracle, MySQL, DB2, Mimer, PostgreSQL, SQLite und Access. Ein Fall für die Lesezeichen 🙂