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.