TS3, SQLite und der Dump

Es waren einmal: Ein TeamSpeak3 Server, eine SQLite Datenbank und ein Fedora 28 Upgrade. Ja, ich weiß, Ihr habt die Schnauze voll von „da geht schon wieder was mit F28 nicht“ berichten, aber was soll man machen? Irgendwie muß man die beheben, oder?

DatabaseError database disk image is malformed

Nach dem F28 Serverupdate brauchte ich mal meinen TS3 Server, also wollte ich den starten. Ich wollte schon behaupten, daß ich es nicht anders erwartet habe, aber eigentlich war ich optimistisch. Half aber nichts, der TS3 Server gab nur dies zum Besten:

CRITICAL|ServerLibPriv | | Server() DatabaseError database disk image is malformed

Um es kurz zu machen, die SQLite DB war technisch in Ordnung, aber irgendeine Checksumme wollte nicht, wie TS3 das wollte. Eine kurze Recherche im Jahr 2010!!! ergab, daß ein anderer User sowas mal mit einem simplen SQL-Dump gefixt hatte. Eine gute und einfache Möglichkeit, wenn sie denn funktioniert.

echo „.dump“ | sqlite3  ts3server.sqlitedb | sqlite3 new.db

Das funktioniert auch soweit, nur daß new.db am Ende lediglich 0 Byte groß war und es ums verrecken auch nicht anders haben wollte. Das Geheimnis lag im SQL.Dump. Der hatte eine Transaktion aufgemacht, aber nicht mit COMMIT geschlossen. Ergo, nie beendet , ergo 0 Byte Datenbank.

echo „.dump“ | sqlite3  ts3server.sqlitedb > dump.sql
vi dump.sql
sqlite3  new.db < dump.sql
mv new.db ts3server.sqlitedb
chown {tsuser} ts3server.sqlitedb

und schon startet der Teamspeakserver wieder 🙂

Frohe Weihnachten ihr Bugs!