Hallo ihr,
es gibt leider Sachen mit denen ich mich sehr schwer tue, eines davon ist das Thema "Datenbanken". Ich nutze die MTA internen SQL Funktionen und habe ein Problem mit einer eigenen Datenbank.
Zum Problem:
Ich habe eine eigene Datenbank "maps.db" in meinem Resourcen-Root-Ordner. Beim starten der Resource baue ich einmalig die Verbindung zur Datenbank auf und nutze diese auch solange die Resource aktiv ist. Die Verbindung erstelle ich wie folgt:
Das schließen der Verbindung erfolgt bei beenden der Datenbankklasse dann so:
if (self.dbConnectionMaps) then
destroyElement(self.dbConnectionMaps)
self.dbConnectionMaps = nil
end
Beim starten einer Map möchte ich nun checken, ob es in der Datenbank die Tabelle "maps" gibt und erstelle sie falls nicht existent:
if (self.dbConnectionMaps) then
dbExec(self.dbConnectionMaps, "CREATE TABLE IF NOT EXISTS maps (MapName TEXT, PlayedTimes NUMBER)")
end
Desweiteren wird die nun gestartete Map in die Tabelle geschrieben:
if (self.dbConnectionMaps) then
dbQuery(self.dbConnectionMaps, "INSERT INTO maps VALUES (?,?)", mapName, 1)
end
Das funktioniert auch super, wenn ich mir die Datenbank nach beenden des Servers anschaue, dann steht dort die Map drin:
Was ist nun das Problem? Das alles funktioniert nur beim ersten Mal starten des Servers. Sobald ich das ein zweites Mal versuche kann die Datenbank nicht mehr gelesen werden. Fehler:
[11:52:08] Server minclientversion is now 1.4
[11:52:08] WARNING: SMW/maps.db [Server] is encoded in ANSI instead of UTF-8. P
lease convert your file to UTF-8.
[11:52:08] Some files in 'SMW' use deprecated functions.
[11:52:08] Use the 'upgrade' command to perform a basic upgrade of resources.
[11:52:08] WARNING: Script '[SMW]\[Scripts]\SMW\maps.db' is not encoded in UTF-8
. Loading as ANSI...
[11:52:08] SCRIPT ERROR: [SMW]\[Scripts]\SMW\maps.db:1: '=' expected near 'forma
t'
[11:52:08] ERROR: Loading script failed: [SMW]\[Scripts]\SMW\maps.db:1: '=' expe
cted near 'format'
[11:52:09] Querying MTA master server... success!
Alles anzeigen
Ich habe doch aber ingame gar keine Möglichkeit festzulegen in welchem Format (UTF-8 oder ANSI) ich die DB speichern möchte. Von außen lässt sie sich weiterhin öffnen. Irgendwelche Ideen dazu oder Verbesserungsvorschläge?