Némi kísérletezés krónikája:
Nálam is hasonló a helyzet:
[mrprise@sintek Enterprise]$ mdb-export -H "/home/mrprise/.jgamebase/Enterprise/Enterprise.mdb" Config > "/home/mrprise/.jgamebase/Enterprise/Export/Config.tmp"
Segmentation fault
Forrásból raktam fel az mdbtools-t aminek az az előnye is lett, hogy tudom debugolni.
mdb-export.c 103 soránál van a SEGFAULT (utolsó sor itt):
if (header_row) {
col=g_ptr_array_index(table->columns,0);
for (j=1;j<table->num_cols;j++) {
col=g_ptr_array_index(table->columns,j);
fprintf(stdout
,"%s%s",delimiter
,col
->name
); }
}
while(mdb_fetch_row(table)) {
if (quote_text && is_text_type(col->col_type)) {
Ez a kód nekem itt erősen bugosnak tűnik, mert ugye a col nem kap értéket ha a header_row hamis. A -H paraméter pedig ugye pont azt csinálja, hogy átugorja a headert. Ha kipróbáljuk -H paraméter nélkül az export parancsot, akkor gond nélkül lefut.
A javítás az lehetne, hogy abban a file-ban amibe beleírtad a -Q paraméter, ki kell szedni a -H-t. Persze kérdés, hogy a jgamebase ezt mennyire fogja szeretni. Másik lehetőség, hogy megjavítjuk az mdbtools-t vagy küldünk bugreportot.
Ezt én az mdbtools-0.5-tel próbáltam.
SF-n mdbtools-0.6pre1 is van, az nálam nem fordul le:
backend.c:31:20: error: static declaration of 'mdb_backends' follows non-static declaration
../../include/mdbtools.h:150:20: note: previous declaration of 'mdb_backends' was here
Attus, egyébként a java forrás átírása segíthet, csak le is kell fordítani újra az egészet. Ahhoz pedig ha jól látom ant kellene, de az meg nincs 64 bitre, ezért én itt egyelőre befejeztem a kísérletezést. Könnyebb átírni az mdb-export kódját és újrafordítani azt. Próbáltam is, de nem sokat javult a helyzet.
Megnéztem a 0.6pre1 forrását, úgy néz ki ott javítottak a bugos részen.
Jobban megnézve a 0.5 kódját, a bugos részt ki is lehet kommentezni és az így javított mdb-export-tal már lefut az import.
Viszont túl sok köszönet nincs benne, mert egy rakás ehhez hasonló hibát dob ki:
Skipping line:799,Time-Gate,23,Time Gate.zip,Tg.com,0,T/Time-Gate.png,47,244,94,8,30,,05-11-2010,2,2,,1,0,0,2,2,1,0,0,1,0,0,1,1,0,0,,0,0,0,0,,0,1,,0,,8_EP_128k_Tape_FileIO_TASMON_UK.cfg,0,0,0,0,1,472,3,5,,,,,1,1,1,0,4294967295
because of the following exception: java.sql.SQLException: Import error on line 1 of file /home/mrprise/.jgamebase/Enterprise/Export/Games.csv.sle: Invalid character string format for type INTEGER.
Így megcsinálja a Database könyvtárat és el is indul, de nem sok mindent importált be. Nekem úgy tűnik, hogy ez az mdb-tools nem nagyon működik még jól. Szóval lényegében én is eljutottam az invalid character hibáig, hiába küzdöttem vele
Egyébként talán van egy egyszerűbb megoldás, egy wines kollégától el kell kérni a Database könyvtárat. Lehet, hogy csak be kell rakni és megy.
Nekem amúgy van winem is virtualbox-ban, majd kipróbálom.