Trocha som sa potrápil s tým, aby som rozchodil OpenOffice 1.1.1 s MySQL 4.x a ak sa chcete pokúsiť o to isté, môže sa vám zísť to čo nájdete v nasledujúcich odstavcoch. Je pravdepodobné, že existujú kratšie cesty ako spojiť OpenOffice s MySQL - napríklad použiť JDBC alebo nájsť samostatný ODBC driver pre MySQL.
Celý cirkus sa odohráva na Slackware-i, ktorý na 90% zodpovedá verzii -current
MySQL na Slackware-i nechodí samo od seba. Potrebujete spustiť príkaz
mysql_install_db s menom databázy (schémy), ktorú chceme vytvoriť:
# mysql_install_db reports Preparing db table Preparing host table Preparing user table Preparing func table Preparing tables_priv table Preparing columns_priv table Installing all prepared tables 040417 21:50:23 /usr/libexec/mysqld: Shutdown Complete To start mysqld at boot time you have to copy support-files/mysql.server to the right place for your system PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! This is done with: /usr/bin/mysqladmin -u root password 'new-password' /usr/bin/mysqladmin -u root -h ras password 'new-password' See the manual for more instructions. You can start the MySQL daemon with: cd /usr ; /usr/bin/mysqld_safe & You can test the MySQL daemon with the benchmarks in the 'sql-bench' directory: cd sql-bench ; perl run-all-tests Please report any problems with the /usr/bin/mysqlbug script! The latest information about MySQL is available on the web at http://www.mysql.com Support MySQL by buying support/licenses at https://order.mysql.com #
Z nejakého dôvodu inštalácia zabudla nastaviť práva pre adresár
/var/lib/mysql/mysql o čom som sa dočítal v logu
/var/lib/mysql/*.err. Napravíme to rýchlo:
# chown -R mysql.mysql /var/lib/mysql/mysql
Potom už môžeme nastaviť heslo pre užívateľa root, tak ako nám bolo odporúčané vo výstupe z mysql_install_db:
# mysqladmin -u root password mojetajneheslo
Posledným, krokom je naštartovať MySQL
# /etc/rc.d/rc.mysql start
Tento krok, môže byť na iných distribúciách iný, ale v princípe tento
skript spúšťa /usr/bin/mysqld_safe, ktorému sa prípadne
špecifikuje dátový adresár, pid-súbor a podobne.
Chodí bez problémov sám, takže jeho inštaláciu nebudem rozoberať. Spomeniem
len, že som ho nainštaloval len pre seba a to do adresára
/home/rastos/OpenOffice1.1.1
OpenOffice vie komunikovať s MySQL buď cez JDBC alebo ODBC. Pri pokuse o
použitie ODBC sa dostaneme k chybovej hláške o chýbajúcej či vadnej
libodbc.so
Cez položku v menu spustíme manažér dátových zdrojov:
Tento zdroj treba prepojiť s ODBC zdrojom na nasledujúcej záložke:
Pri nastavovaní URL zdroja dát dostaneme chybovú hlášku:
Dobre ideme teda pre správne ODBC.
Po krátkom hľadaní na Freshmeat-e a Google-i som dospel k názoru, že potrebujem balík unixODBC. Stiahol som zdrojáky aktuálnej verzie (2.2.8) a nasledoval, klasický postup:
$ tar xfz /mnt/usb/unixODBC-2.2.8.tar.gz $ ./configure checking for a BSD-compatible install... /usr/bin/ginstall -c checking whether build environment is sane... yes ... checking for strcmp... yes configure: creating ./config.status config.status: creating Makefile config.status: creating config.h config.status: executing depfiles commands
Mám vo zvyku inštalovať balíky nepochádzajúce z distribúcie na zvláštne
miesto, takže som použil prepínač --prefix=/usr/local/unixODBC.
Či to urobíte aj vy je na vás. Nasledovalo skompilovanie balíka:
$ make ...
Buildovanie trvalo kupodivu celkom dlho - asi toľko ako buildovanie jadra. Ale prešlo bez zjavných problémov a takmer bez warning-ov. Ďalší krok asi tiež poznáte:
Pretože ja som použil prepínač --prefix, musel som pridať adresár, s nainštalovanými knižnicami do$ su Password: # make install
/etc/ld.so.conf a ako root spustiť
ldconfig.
Dosiaľ išlo všetko bez problémov a ja som sa nazdával, že už bude všetko
fungovať. Omyl. Najprv treba ODBC nakonfigurovať - programom
ODBCConfig. Kto konfiguroval ODBC pod MS Windows, bude mu
niečo povedomé:
Prvým krokom je pridanie ovládača:
Hoci dialog už obsahuje cestu do adresára, kde treba hľadať príslušný ovládač
tým sa automatika končí. Nápoveda hovorí, že treba zvoliť súbor, ktorý má
pravdepodobne príponu .so, ale to je všetko. Tipol som si, že
bude mať v mene písmena my
, ale žiaden taký súbor nainštalovaný nebol.
Takže späť k dokumentácii a Google-u. Zistil som, že vývojári unixODBC
nenapísali ovládač pre MySQL, ale zaradili do projektu kód, ktorý napísali
vývojári MySQL. Tento kód sa nachádza v adresári Drivers/MySQL
a má vlastný skript configure. Treba ho spúšťať s rovnakými
parametrami ako configure pre samotne unixODBC, ale treba navyše spustiť s
parametrom --with-unixODBC a adresárom, kam bolo nainštalované
unixODBC:
$ ./configure --prefix=/usr/local/unixODBC --with-unixODBC=/usr/local/unixODBC
Problém bol v tom, že tento kód funguje s MySQL verzie 3.x - a nepodarilo sa mi ho na prvý pokus skompilovať. Vyskytlo sa väčšie množstvo warning-ov a nakoniec kompilovanie zlyhalo:
options.c:415: error: structure has no member named `timeout' make: *** [options.lo] Error 1
Nebudem to naťahovať. MySQL 4.x má v istej štruktúre namiesto jednej
položky timeout položky read_timeout a
write_timeout. Prepísal som teda timeout na read_timeout.
Ako som neskôr zistil, bolo treba opraviť aj tie warning-y, pretože
MySQL zmenilo počet a aj poradie(!) položiek v štruktúre
MYSQL_FIELD, takže z toho bola nakoniec celkom slušná
záplata. Po jej aplikovaní:
cd unixODBC-2.2.8 $ patch -p2 < unixODBC.patch
už kompilácie prebieha hladko a dopracujeme sa k
vytúženým ovládačom pre MySQL - libmyodbc3.so a
libodbcmyS.so - nezabudnite ich nainštalovať pomocou make install
a zbehnúť ldconfig. Potom môžeme konečne ten ovládač použiť:
S pridaným ovládačom môžeme zadefinovať zdroj dát. Pretože nie som expert a nechcel som zaneplešiť systém, nadefinoval som užívateľský zdroj dát a nie systémový:
Nezabudnite vyplniť meno databázy (schémy), s ktorou je zdroj dát viazaný -
v mojom prípade reports
. Potom môžeme vyskúšať ďalšiu aplikáciu
s ktorou prichádza unixODBC - DataManagerII:
Dokáže zobraziť štruktúru databázy, tabuliek, kľúče, indexy ale aj zbehnúť
SQL príkazy. Najlepšie však na tom je, že sa rozbehne aj OpenOffice.
Dopíšte Data source URL
a nezabudnite dopísať užívateľa. Root nie je asi to najvhodnejšie,
ale na ukážku stačí. Po prepnutí na záložku Tables či
Queries sa dostanete k veciam, ktoré pre mňa osobne
boli prekvapením.
Ak ste sa prepracovali až sem, gratulujem vám a ako odmenu môžete použiť funkciu Mail Merge v OpenOffice-e s použitím svojho novo-vytvoreného zdroja dát.