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.

Použité verzie

Celý cirkus sa odohráva na Slackware-i, ktorý na 90% zodpovedá verzii -current

MySQL

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.

OpenOffice 1.1.1

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

unixODBC 1.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: OpenOffice Writer - Tools menu

Vytvoríme nový MySQL zdroj:
OpenOffice Data source Administrator - General

Tento zdroj treba prepojiť s ODBC zdrojom na nasledujúcej záložke:
OpenOffice Data source Administrator - MySQL

Pri nastavovaní URL zdroja dát dostaneme chybovú hlášku:
Error:could not load libodbc.so

Dobre ideme teda pre správne ODBC.

unixODBC

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:

$ su 
Password:
# make install
Pretože ja som použil prepínač --prefix, musel som pridať adresár, s nainštalovanými knižnicami do /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é:

unixODBC data 
source Administrator

Prvým krokom je pridanie ovládača:

unixODBC: adding driver

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ť:

unixODBC:MySQL 
driver configured

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ý:

unixODBC: 
configuring User Data Source

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:

unixODBC Data 
Manager

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

OpenOffice: MySQL data source configured

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.