MySQL Improved Extension

Wenn man früher unter PHP eine MySQL-Datenbank ansprechen wollte, so bediente man sich der Befehle mysql_connect, mysql_select_db, mysql_query und Co. Das Problem an dieser API ist, das sie deprecated also veraltet ist und damit nicht mehr genutzt werden sollte:

$db = mysql_connect ($host, $user, $password) or die ("Es konnte keine Verbindung zum Datenbankserver hergestellt werden");
mysql_query("SET NAMES 'UTF8'");
mysql_select_db ($name, $db) or die("Die Datenbank \"$name\" konnte nicht ausgewählt werden");

Stattdessen soll man die MySQL Improved Extension kurz Mysqli nutzen. Dabei handelt es sich um eine moderne objektorientierte API für den Zugriff auf MySQL in PHP. Eine einfache Abfrage mittels Mysqli sieht dabei wie folgt aus:

$mysqli = new mysqli($databaseHost, $databaseUsername, $databasePassword, $databaseName);
$sql = "SELECT * FROM token";
$result = $mysqli->query($sql);

for ($row_no=$result->num_rows-1; $row_no>=0; $row_no--) 
{
    $result->data_seek($row_no);
    $row=$result->fetch_assoc();
    echo " id = " . $row['id'] . "\n";
}

Die API unterscheidet sich dabei nicht groß von der alten API, so das Umstieg hier relativ einfach fallen sollte. Auf der entsprechenden Dokumentationsseite auf php.net finden sich noch viele weitere Beispiele.

Gelöschte Dateien unter ownCloud entfernen

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.

MySQL Verwaltungssoftware für Mac OS X

Möchte man unter Windows eine entfernte MySQL-Datenbank ansprechen, so kann man hierfür HeidiSQL nutzen. Mit der Software Sequel Pro gibt es so etwas ähnliches für Mac OS X. Die Software kann dabei auf der offiziellen Seite bezogen werden.

Sequel Pro

Sequel Pro

Sequel Pro ist unter der MIT-Lizenz verfügbar und somit freie Software. Der Quelltext ist auf Google Code zu finden. Er kann mittels eines SVN Client ausgecheckt werden:

svn checkout http://sequel-pro.googlecode.com/svn/trunk/ sequel-pro

Eine Alternative zu Sequel Pro ist das plattformübergreifende MySQL Workbench, bei welchem es sich ebenfalls um freie Software handelt.

ERM Designer für den Browser

Wer Entity-Relationship-Modelle bzw. die entsprechenden Diagramme (ERD) erstellen möchte, der kann hierfür Software wie die freie MySQLWorkbench nutzen. Für das plattformübergreifende Erzeugen solcher Diagramme kann man allerdings auch die freie Webapplikation wwwsqldesigner nutzen.

Der ERD-Designer in Aktion

Der ERD-Designer in Aktion

Auf der Webseite des Autors gibt es eine Demo zum Ausprobieren. Die in PHP und Javascript geschriebene Software steht dabei unter einer BSD-Lizenz und ist somit freie Software. Bei der Installation muss das entsprechende Archiv nur auf dem Webserver entpackt werden und kann sofort genutzt werden. Nur wer die Möglichkeiten der serverseitigen Speicherung nutzen möchte, muss einige Parameter konfigurieren.