PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C++ - MySQL++ - sql_create_c_names_ Zahl > 26



dark alex
07.04.2007, 19:13
Hi!

Ich hab ein Problem:

Eines unserer Programme benutzt MySQL++, und unter anderem diesen Befehl:

sql_create_c_names_XXX(....

XXX ist eine Zahl, die die Anzahl der abzurufenden Felder aus der Tabelle enthält. nachfolgend werden dann die Felder inklusive typ etc aufgelistet.

Doku: http://mysql.teleglobe.net/documentation/mysql++/7_Specialized.html Recht weit unten, 7.8!

So.
Bei uns funktioniert das perfekt. Die Zahl ist immer < 26
ABER eine Tabelle benötigt 30 felder. Der Befehl muss also sql_create_c_names_30 heißen. Wenn XXX aber größer als 25 wird, gibt es diesen Fehler:

In file included from ../gflib/dbhelpers.h:6,
from ../gflib/gflib.h:6,
from includes.h:21,
from source.cpp:12:
../gflib/tables.h:7: error: `flotten' was not declared in this scope
../gflib/tables.h:9: error: parse error before `,' token
../gflib/tables.h:9: error: `id' was not declared in this scope
../gflib/tables.h:10: error: parse error before `,' token
../gflib/tables.h:10: error: `befehl' was not declared in this scope
../gflib/tables.h:11: error: parse error before `,' token
../gflib/tables.h:11: error: `metall' was not declared in this scope
../gflib/tables.h:12: error: parse error before `,' token
../gflib/tables.h:12: error: `treibstoff' was not declared in this scope
../gflib/tables.h:13: error: parse error before `,' token
Und so weiter. Der listet alle Felder auf.

Nach der Auflistung kommt das:

../gflib/tables.h:38: error: ISO C++ forbids declaration of `
sql_create_c_names_30' with no type
../gflib/tables.h:38: error: initializer list being treated as compound
expression


Und dann fehler bei der Verarbeitung der Daten, das sind folgefehler, die hierraus folgen.


Ich habs mit gcc und g++ proiert. gleiches Ergebnis bei beiden.

Würde ich 5 Felder entfernen, ginge es. Ich benötige aber alle 30.

Woran liegt das?

Sorry, ich selber kann kein C++, und mein Kumpel, ders kann ist nicht da. (Urlaub)


//Edit:
Ich sollte noch sagen, das der Server unter Debian läuft, und auf einem früheren Server gings auch mit der 30.
(war SuSE, daran liegts sicher net, es ging auch schonmal mit Debian)

walljumper
07.04.2007, 20:22
Es gibt den Befehl schlicht und ergreifend nicht. Ich versteh zwar nicht warum die für jede zahl ne extra funktion geschrieben haben aber da kann man nichts machen mehr als 25 geht nicht.

du musst dir irgendetwas anderes überlegen.

dark alex
07.04.2007, 21:42
Es gibt den Befehl schlicht und ergreifend nicht. Ich versteh zwar nicht warum die für jede zahl ne extra funktion geschrieben haben aber da kann man nichts machen mehr als 25 geht nicht.

du musst dir irgendetwas anderes überlegen.


Das ist ja das komisch, die gibts eben shcon, ich hab etwas mehr rausgefunden

Diese Zahl ist ein Limit: http://www.mail-archive.com/mysqlpp-commits@gna.org/msg00080.html

Nur wie ich des ändere....

Auf zwei andren Servern gings auch schonmal.

Gleicher Code. Ich such weiter. Irgendwie muss es gehen.

//Edit @ 22:51: Das ist nciht das, was ich meinte, aber ich hab evtl daraus das richtige gefunden. ene header, in der diese Definiert werden.

Die wird autogeneriert. ich nehm mir etzt den generator unter die lupe. Wenn ich ne Lösung hab, schreib ichs hier rein.

dark alex
07.04.2007, 22:03
DIE LÖSUNG IST DA!!! *freu*

Folgendes: pfad-zur-entpackten-mysqlpp-2.1.1/lib/custom.pl öffnen
Darin

my $max_data_members = 25;
durch

my $max_data_members = 30;
ersetzen. 30 natürlich durch euere benötige Zahl ersetzen. ACHTUNG: Je größer die Zahl, desto größer der Speicherverbrauch von mysql++!!
Dann die Datei ausführen.
Das gleiche nochmal mit querydef.pl machen und dann mysql++ neu compilieren und installieren (Vorher make uninstall und make clean nicht vergessen).

An walljumper: Du hattest recht :-) Die Funktion gibts net, wiel dieses Perl-Script die alle generiert, nämlich so viele, wie das limit ist.


Jetzt hab cih ncoh ndre Fehler, die schaff cih hoffentlich selber :-)


//Edit: Sry wegen Doppelpost! Hab jetzt net mitgedacht! *schäm*

walljumper
08.04.2007, 01:49
ja habs dann auch gesehen als du das script gepostet hast, wollte eigentlich auch dann die Lösung posten musste aber leider weg.