RED-BARON schrieb:
die SQL-Query kann doch falsch sein wie sie will, der Server sollte
den entsprechenden Fehlertext senden, doch dazu kommt es ja nicht
Segmentation fault
Ist irgendwas beim Linken falsch gegangen ? Warnungen beim compilieren ?
jep stimmt, soweit habe ich dann garnicht mehr gelesen.. bin bei der query hängen geblieben.
ja, eigentlich wollte ich mein beispiel ja minimal haben.
aber da muss dann eben noch mehr rein.
da brauche ich noch ein bisschen.
schon mal vielen dank
phlox81 schrieb:
Ist das nicht ganz logisch, wenn du bei GROUP BY auch den Vornamen als Kriterium setzt?
nö, gerade da er auch den Vornamen in der GROUP BY drin hat, müssten zwei zeilen rauskommen, und nicht COUNT(*) = 2.
Naja.
Zurückspielen können wir die Daten. Das haben wir durchaus schon probiert, und funktioniert "super".
Wobei "super" eben heisst: es hat noch nie Probleme gegeben, nur durch die vielen *.trn Files die man einzeln restoren muss, dauert es halt ewig, und nervt wie Sau.
Aber naja. Kann man auch nixe machen.
Im Prinzip ist das ein Webcrawler der nach einem bestimmten Muster auf der Webseite sucht(Stichwort Regex). Du müsstest quasi den HTML Code laden und nach Telefonnummern scannen. Der Export nach Excel sollte nicht das Problem sein!
Ich hatte damit noch nie Probleme. Klar dauert es lange wenn man etwas an Tabellen ändert.
Das ist aber bei jedem RDBMS so. Schon mal das SChema bei MySQL geändert mit einer Tabelle von 50Mill einträgen? Horror.
Da funkt mal die nächsten 15 Minuten nichts.
Hallo
Ich habe ein Programm geschrieben, was aus einer Datei die IDs ausliest (einlesen der Datei mittel Expat) und dann in eine Datenbank speichert.
Ich bekomme immer wenn ich Daten in meine Datenbank eintragen will ein ganze Menge Memory Leaks. Ich habe schon sehr viel im Internet geforscht und bin mir eigetnlich sicher, dass ich das Problem richtig gelöst habe. Leider bekomme ich das nicht hin.
Ich poste jetzt mal nicht den ganzen Code, sondern erstmal meine SQL Anweisung.
void insert_tableH(int id) {
//cout << &id << endl;
char *zSQL = sqlite3_mprintf("INSERT INTO Highways (id) VALUES ('%i')",id);
int err = sqlite3_exec(Database, zSQL, NULL, NULL, &error);
sqlite3_free(zSQL);
if( err!=SQLITE_OK ) {
cout << "Fehler beim eintragen der daten\n";
cout << error <<endl;
sqlite3_free(error);
exit(1);
}
}
Also ich bin mir sehr sicher, dass der Fehler in dieser Methode zu finden ist. Denn wenn ich den Funktionsaufruf auskommentiere bekomme ich keine Leaks mehr.
2 Dinge wären eventuell noch möglich:
1: Verursacht das einmalige öffnen der Datenbank vllt die Leaks und ich muss nach jedem eintragen von einem Datensatz die DB wieder schliessen und dann erneut öffnen?
2: Reicht es aus wenn ich sqlite3_free() einfach so aufrufe oder muss ich vorher noch irgendwelchen Code implementieren? Brauche ich vorher malloc?
MFG
MilkToast
Also ich sammele die Änderungen immer in einem SQL-Skript und wenn dann eine neue Softwareversion ausgeliefert wird gebe ich dem Skript eine Versionsnummer und liefere sie mit aus (das kann dann über ein Tool eingespielt werden). Danach fange ich ein neues leeres SQL-Skript für die nächste Version an. Wenn dann der Mitarbeiter zu einem Kunden fährt um dort alle Systeme zu aktualiseren baue ich ihm meistens ein Diff-File wo alle ausstehende Updateskripte zusammenkopiert worden sind. Das passiert aber eigentlich selten, da die Kunden meist die aktuelle Software- und damit DB-Version haben wollen, es gibt z.B. keine großen Versionsunterschiede zwischen den einzelnen Kunden. Worauf du lieber aufpassen solltest ist die Möglichkeit
* ein Skript mehrmals einzuspielen ohne das dieses schädlich ist
* der häufigste Fehler ist ist das Auslassen (Vergessen) ein Skript einzuspielen. Diese Fehler lassen sich nur schwer finden. Hier solltest du irgend eine Art Management einführen.
Ich würde es glaube ich auch so machen, wie Unix-Tom es vorgeschlagen hat. Falls Du aber unbedingt schon eine hierarchische Struktur von deiner Datenbank bekommen willst ... es gibt sowas wie ein SHAPE commando. Wie das genau funktioniert weiss ich im Moment nicht mehr. Ich glaube das kommt noch von 'ner Access-Datenbank. Das konnte man aber irgendwie auch für eine SQL-Datenbank nutzen in dem man mit dem Datenprovider rumtrickst. (ich würde es nicht so machen)
http://support.microsoft.com/kb/189657
Okay, hab ich mir fast schon gedacht.
Wenn es lange dauert dann vielleicht weil viele andere SELECTS machen.
Es handelt sich hierbei um eine rein lokal erreichbare Datenbank, es hat also sonst niemand Zugriff darauf und es finden nebenbei keine Anfragen an die DB statt.
Geh auf "Projekt Optionen", dort auf "Zusätzliche Kommandozeilen Optionen" und klicke auf "Bibliothek/ Objekt hinzufügen".
Hier wählst du die "MySQL/lib/opt/libmysql.lib aus.
Nun sollte es gehn.
Bei MySQL kannst DU so eine SQL-Datei dem Clientproramm von MySQL übergeben. Dann musst Du dir selbst nicht schreiben.
Schau dir mal das Programm mysql mit den Parametern an.
Schreib dir ein Script welche dir das automatisiert und gut ist es.
Das mit "b" war ein Flüchtigkeitsfehler, sorry.
Wenn dann hätte es "t1.b = t2.c" heissen müssen (t2.b gibt's ja garnicht).
Wieso du kein Ergebnis bekommst weiss ich auch nicht.
Bist du sicher dass du die richtigen beiden Spalten vergleichst?
Und dass die gaznen "mid()" korrekt sind?
Hallo!
In meinem ER-Diagramm habe ich eine Entität names "Abmahnung". "Abmahnung" hat diverse Attribute, unter anderem das Attribut "ANr", was für Abmahnungsnummer steht.
Nun liegt mir folgende Aufgabe vor: "Abmahnung a "ist Folgeabmahnung" von
Abmahnung b Teilmenge von Abmahnung x Abmahnung. Dabei hat jede Abmahnung maximal eine Folgeabmahnung. Zeichnen sie diese Relation in das ER-Modell ein. "
Als Lösung habe ich mir vorgedacht, der Entität "Abmahnung" ein Attribut "Folgeabmahnung" zu verpassen: http://www.abload.de/img/unbenannt5ael.jpg
Nun die Frage: Darf man Attribute in Beziehung miteinander setzen, so wie ich es gemacht habe?
Sind meine Beziehungs-Angaben richtig? Es handelt sich um die Min-Max-Notation: http://de.wikipedia.org/wiki/Min-Max-Notation