MySQL-Win32 hat sich als sehr stabil erwiesen. Leider gibt es einige
Unterschiede zwischen der Windows Version und den UNIX Derivaten, die häufig
zu Problemen führen:
- Win95 und Threads Unter Windows 95 gibt es ein Memory Leak,
welches pro aktiviertem Thread 200 Bytes von dem Hauptspeicher nach dessen
Beendigung nicht mehr
freigibt. Das bedeutet, daß nach ca. 5000 Zugriffen ca. 1 MByte RAM Verlust
zu beklagen ist. Der Fehler liegt in den Libraries von Windows 95, NT und
Windows 98 besitzen diesen Fehler nicht.
- Windows 98 muß nach ca. 30 Tagen neu gestartet werden, da es einfach
aufhört, zu arbeiten.
- Blocking Sockets sorgen bei der Win32 Version von MyQL dafür,
daß bei jedem Zugriff eines Clients auf den Port dieser gesperrt wird. Das
hat zur Folge, daß eine Verbindung nicht nach einigen Minuten/Stunden nicht
automatisch freigegeben (disconnektiert) wird, wie dies unter UNIX der Fall
ist. Wenn eine Verbindung hängt, das ist immer dann der Fall, wenn ein
Client mal abstürzt. Dieser Thread wird dann nicht automatisch freigegeben
und verbraucht dann RAM. Ein DoS Angriff wäre sehr einfach möglich...
In diesem Falle muß MySQL von Zeit zu Zeit neu gestartet werden....ebenso,
wie Windows NT.....mysqladmin mit den Optionen kill und
shutdown funktioniert in diesem Fall nicht.
- UDF (User Defined Functions) können momentan unter Win32 nicht benutzt
werden.
- DROP DATABASE funktioniert immer dann nicht, wenn auf die
Datenbank von irgendeinem Client (lesend oder scheibend) zugegriffen wird.
- MySQL kann nicht mit dem Taskmanager ausgeschaltet werden.
- Unter Win32 unterstützt MySQL keine User definierten Funktionen.
- Eine Datenbank, die in Gebrauch ist, kann nicht gelöscht werden.
- MySQL kann nicht mit dem Taskmanager beendet werden, sondern muß mit
dem SHUTDOWN Utility heruntergefahren werden.
- Die Unterscheidung von Groß/Kleinschreibung bei Dateinamen, Datenbanknamen und Tabellennamen
funktioniert nur unter UNIX, nicht unter Win32.
- Innerhalb eines Statements müssen Groß/Kleinschreibung einheitlich
sein. Dieses Statement führt zu Fehlern: SELECT * FROM my_table WHERE
MY_TABLE.col=1;
- Unter UNIX ist die Verwendung von "/" einheitlich, unter Win32 müssen
alle Charakter als "\" eingegeben werden, so z.B. die Pfadnamen:
LOAD DATA INFILE "C:\\tmp\\skr.txt" INTO TABLE skr;
SELECT * FROM skr INTO OUTFILE 'C:/tmp/skr.txt';
- Named Pipes funktionieren unter Win32 nur unter Windows NT. Hierzu muß
die Datei c:\my.cnf angelegt werden, und folgende Informationen enthalten:
[client]
host = localhost
- Falls der Fehler Access denied for user: 'some-user@unknown' to database 'mysql' erscheint, dann kann der Name des lokalen Hosts nicht korrekt
aufgelöst werden. Hierzu muß in der Datei c:\windows\hosts die Zeile 127.0.0.1
localhost eingetragen werden.