Hallo,
ich bin dabei eine Delphi2005-Anwendung auf Delphi2012 umzustellen.
In der Delphi2005-Anwendung wurde direkt mit den Befehlen der
MySQL-Bibliothek gearbeitet unter Benutzung der
mysql.pas von
http://www.audio-data.de/mysql.html
Bei der Umstellung habe ich einerseits die Datenbankzugriffe von den direkten
mysql-Befehlen (z.B. mysql_num_rows, mysql_real_query) auf dbExpress-Komponenten umgestellt.
Ich nutze eine TSQLConnection und TSQLQuery - Komponenten.
Der Verbindungsaufbau und reine Routine-Abfragen klappen auch.
Jedoch bekomme ich Probleme, wenn sehr viele Abfragen hintereinander abgearbeitet werden sollen (ca. 30000 Queries).
Das Programm steigt dann nach einer Weile mit der Meldung "Can't connect to
MySQL server on
localhost (10048)" aus.
Eine Verbindung zum
MySQL-Server bestand allerdings vorhin. Die
SQL-Statements sind auch in Ordnung. Diese kann ich problemlose auf der Kommandozeile ausführen.
Solche Probleme hatte ich vorher in der Delphi2005-Umgebung unter der Nutzung der
mysql.pas nicht.
Weiß jemand von euch, warum zwischendurch einfach der Datenbankzugriff verloren geht?
Die Option KeepConnection wurde gesetzt.
Die Datenbankverbindung wird folgendermaßen erzeugt:
Delphi-Quellcode:
self.SQLConnectionMySQL := TSQLConnection.Create(self);
self.SQLConnectionMySQL.DriverName := '
MySQL';
self.SQLConnectionMySQL.GetDriverFunc := '
getSQLDriverMYSQL';
self.SQLConnectionMySQL.LibraryName := '
mysqllib_32bit\dbxmys.dll';
self.SQLConnectionMySQL.VendorLib := '
mysqllib_32bit\LIBMYSQL.dll';
self.SQLConnectionMySQL.Params.Values['
BlobSize'] := '
-1';
self.SQLConnectionMySQL.Params.Values['
Database'] := '
db';
self.SQLConnectionMySQL.Params.Values['
ErrorRessourceFile'] := '
';
self.SQLConnectionMySQL.Params.Values['
HostName'] := mysql_host;
self.SQLConnectionMySQL.Params.Values['
LocaleCode'] := '
0000';
self.SQLConnectionMySQL.Params.Values['
User_Name'] := mysql_user;
self.SQLConnectionMySQL.Params.Values['
Password'] := mysql_password;
self.SQLConnectionMySQL.Params.Values['
Compressed'] := '
False';
self.SQLConnectionMySQL.Params.Values['
Encrypted'] := '
False';
self.SQLConnectionMySQL.LoginPrompt := False;
self.SQLConnectionMySQL.KeepConnection := True;
self.SQLConnectionMySQL.Open;
Viele Grüße,
ottixus