FAQ-Artikel Wunsch: Embedded Mysql
FAQ-Artikel Wunsch: Embedded Mysql
Hi,
seit kurzem beschäftige ich mich mit Datenbanken und Qt. Dabei machte ich mit SQLite gute Erfahrungen, aber es fehlt mir mind. eine wichtige Funktion:
REGEXP in den SELECT's, und ein Verschlüsseln der Datenbank wäre auch ganz nett.
Wie aber läuft nun ein Umstieg von SQLite zu MySQL? Dass es einige Probleme bei der Erstellung des Treibers geben kann, habe ich der Flut an Postings entnommen, aber es scheint letztendlich doch immer zu klappen.
Andere Fragen, die mir verschlossen blieben waren:
1. Wie sieht bitte die "Datenbank-Datei" aus? Bei SQLite ist das ja nur eine. Sind es bei Embedded MyQSL 3: *.frm, *.MYI, *.MYD?
2. Wenn ich Embedded MyQSL verwende, welchen Host muss ich dann angeben?
Und überhaupt, will nicht jemand der sich damit auskennt, schnell mal einen kurzen FAQ-Eintrag schreiben, der (unter der Voraussetzung, dass man den Treiber hat) die Verwendung von Embedded MyQSL kurz erläutert? Minimalbeispiel, minimalistische Angaben etc. reichten da völlig aus.
Dann hoffe ich mal, dass das hier ein freundlicher Mensch ließt, und 10 min Zeit hat einen solchen Eintrag zu schreiben.
Danke
Lykurg
seit kurzem beschäftige ich mich mit Datenbanken und Qt. Dabei machte ich mit SQLite gute Erfahrungen, aber es fehlt mir mind. eine wichtige Funktion:
REGEXP in den SELECT's, und ein Verschlüsseln der Datenbank wäre auch ganz nett.
Wie aber läuft nun ein Umstieg von SQLite zu MySQL? Dass es einige Probleme bei der Erstellung des Treibers geben kann, habe ich der Flut an Postings entnommen, aber es scheint letztendlich doch immer zu klappen.
Andere Fragen, die mir verschlossen blieben waren:
1. Wie sieht bitte die "Datenbank-Datei" aus? Bei SQLite ist das ja nur eine. Sind es bei Embedded MyQSL 3: *.frm, *.MYI, *.MYD?
2. Wenn ich Embedded MyQSL verwende, welchen Host muss ich dann angeben?
Und überhaupt, will nicht jemand der sich damit auskennt, schnell mal einen kurzen FAQ-Eintrag schreiben, der (unter der Voraussetzung, dass man den Treiber hat) die Verwendung von Embedded MyQSL kurz erläutert? Minimalbeispiel, minimalistische Angaben etc. reichten da völlig aus.
Dann hoffe ich mal, dass das hier ein freundlicher Mensch ließt, und 10 min Zeit hat einen solchen Eintrag zu schreiben.
Danke
Lykurg
Hallo,
Hast Du denn schon irgendwas in Richtung "embedded mysql" rausfinden können?
Ich habe gestern versucht, einen eingebetten mysql server zu verwenden, es hat leider nicht funktioniert.
Das qt-mysql-plugin habe ich gegen libmysqld gelinkt (mein Testprogramm auch).
"# define Q_NO_MYSQL_EMBEDDED" in qsql_mysql.cpp habe ich auskommentiert (windows).
Der server wird auch gestartet (herausgefunden mittels qDebug() nach mysql_server_init() in qsql_mysql.cpp)
Nur Verbindung kann ich keine aufbauen.
Fehler: "Can't connect to MySQL server on 'localhost' (10061)" und "QMYSQL: Unable to connect".
Da ich garnicht zu 'localhost' verbinden will war ich etwas verwirrt, denn ich habe den Host auch nicht angegeben.
In der MySQL Dokumentation steht, dass die interne (embedded) Verbindung verwendet wird, wenn kein Host oder 'localhost' gesetzt ist.
Also müsste es doch funktionieren. Tut es aber nicht!
Verbindungen zu externen MySQL-Servern funktionieren tadellos.
Das alles unter WinXP mit MinGW und Qt 4.1.3 MySQL 4.1.x
Irgendwelche Vorschläge wie man das Problem beheben kann?
Danke
Mirko
Hast Du denn schon irgendwas in Richtung "embedded mysql" rausfinden können?
Ich habe gestern versucht, einen eingebetten mysql server zu verwenden, es hat leider nicht funktioniert.
Das qt-mysql-plugin habe ich gegen libmysqld gelinkt (mein Testprogramm auch).
"# define Q_NO_MYSQL_EMBEDDED" in qsql_mysql.cpp habe ich auskommentiert (windows).
Der server wird auch gestartet (herausgefunden mittels qDebug() nach mysql_server_init() in qsql_mysql.cpp)
Nur Verbindung kann ich keine aufbauen.
Fehler: "Can't connect to MySQL server on 'localhost' (10061)" und "QMYSQL: Unable to connect".
Da ich garnicht zu 'localhost' verbinden will war ich etwas verwirrt, denn ich habe den Host auch nicht angegeben.
In der MySQL Dokumentation steht, dass die interne (embedded) Verbindung verwendet wird, wenn kein Host oder 'localhost' gesetzt ist.
Also müsste es doch funktionieren. Tut es aber nicht!
Verbindungen zu externen MySQL-Servern funktionieren tadellos.
Das alles unter WinXP mit MinGW und Qt 4.1.3 MySQL 4.1.x
Irgendwelche Vorschläge wie man das Problem beheben kann?
Danke
Mirko
-
BartSimpson
- Beiträge: 1379
- Registriert: 6. November 2004 12:03
- Kontaktdaten:
Ich habe gerade etwas rumgespielt. nur komme ich beim linken nicht weiter.
Laut Quellcode von TT muss man unter Windows die mysqld lib statisch linken. Und eine Zeile im Quellcode des Modues in Qt ändern.
Also gesagt getan statische lib gebaut.(VS c++ Express)
Nur wie soll ich die MS lib nach mingw convertieren??
Denn ein wenn ich die so nehmen stürzt der linker von mingw ab:(
Laut Quellcode von TT muss man unter Windows die mysqld lib statisch linken. Und eine Zeile im Quellcode des Modues in Qt ändern.
Also gesagt getan statische lib gebaut.(VS c++ Express)
Nur wie soll ich die MS lib nach mingw convertieren??
Denn ein wenn ich die so nehmen stürzt der linker von mingw ab:(
Leider habe ich keine Ahnung von VS c++.
Die Mysqllib habe ich nicht selbst gebaut, sondern die aus dem mysql-packet in ...\mysql\Embeded\static\mysqlserver.lib (oder so ähnlich - hab's jetzt nicht hier) verwendet.
die lies sich ohne Fehler gegen das qt-mysql-plugin linken und auch (zum test) gegen mein Programm.
Hast Du mal "reimp" und "dlltool" probiert?
Die Mysqllib habe ich nicht selbst gebaut, sondern die aus dem mysql-packet in ...\mysql\Embeded\static\mysqlserver.lib (oder so ähnlich - hab's jetzt nicht hier) verwendet.
die lies sich ohne Fehler gegen das qt-mysql-plugin linken und auch (zum test) gegen mein Programm.
Hast Du mal "reimp" und "dlltool" probiert?
-
BartSimpson
- Beiträge: 1379
- Registriert: 6. November 2004 12:03
- Kontaktdaten:
-
BartSimpson
- Beiträge: 1379
- Registriert: 6. November 2004 12:03
- Kontaktdaten:
klar - scheint mir auch logischBartSimpson hat geschrieben:dlltool ist nutzlos, da ja keine dll existiert.
da du es selbst compiliert hast nehme ich an, du hast die source version von mysql - ich benutzer die binary ("windows Without installer").BartSimpson hat geschrieben:Wenn ich miir mysql runterlade,gibt es leider nix staisches. Die Verzeichnisse sind leer.
http://dev.mysql.com/get/Downloads/MySQ ... isc/mysql/
da sind header und compilierte libs dabei.
-
BartSimpson
- Beiträge: 1379
- Registriert: 6. November 2004 12:03
- Kontaktdaten:
-
BartSimpson
- Beiträge: 1379
- Registriert: 6. November 2004 12:03
- Kontaktdaten:
Schade, bei mir lässt es sich wie gesagt Fehlerfrei compilieren.BartSimpson hat geschrieben:So wenn die mysqlserver.lib benutzte passiert aber leider das selbe. egal ob die die lib vorher für den mingw konvertiere oder nicht:(
Leider habe ich auch gar keine Erfahrung in dem Bereich
Vielleicht sollte ich doch einfach SQLite nehmen - das funktioniert wenigstens
-
BartSimpson
- Beiträge: 1379
- Registriert: 6. November 2004 12:03
- Kontaktdaten:
Transaktionen gibt's doch in SQLite 3 - oder?
Ich habe eher dass Problem, dass wenn mehr als 255 Zeilen in z.b. einem TableView angezeigt werden ich keine Daten mehr in die SQLite-DB schreiben kann, weil immer ein Lock darauf ist.
Das lässt sich zwar mit
beheben, ist aber sehr langsam bei Tabellen mit vielen Einträgen.
Ich habe eher dass Problem, dass wenn mehr als 255 Zeilen in z.b. einem TableView angezeigt werden ich keine Daten mehr in die SQLite-DB schreiben kann, weil immer ein Lock darauf ist.
Das lässt sich zwar mit
Code: Alles auswählen
while (myModel->canFetchMore())
myModel->fetchMore();-
BartSimpson
- Beiträge: 1379
- Registriert: 6. November 2004 12:03
- Kontaktdaten: