Portál AbcLinuxu, 15. května 2024 23:03

OpenOffice.org 1.1.1 plus MySQL 4

27. 4. 2004 | Rastislav Stanik
Články - OpenOffice.org 1.1.1 plus MySQL 4  

Chcete-li využívat databázi MySQL v součinnosti s kancelářským balíkem OpenOffice.org, přijdou vám vhod následující postřehy a návod.

Trocha som sa potrápil s tým, aby som rozchodil OpenOffice 1.1.1 s MySQL 4.x. Ak sa chcete pokúsit 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 Slackwari, ktorý na 90 % zodpovedá verzii -current

MySQL

MySQL na Slackwari nechodí samo od seba. Potrebujete spustit 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.org 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.org vie komunikovať s MySQL buďc 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.net a Google 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 warningov. Ď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 Googlu. Zistil som, že vývojári unixODBC nenapísali drajver 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 warningov 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 warningy, 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 nadefinovať 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. Naljepšie však na tom je, že sa rozbehne aj OpenOffice.org. 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 s použitím svojho novovytvoreného zdroja dát.

Související články

Tvorba databází v MySQL
Správa databází v MySQL
Příručka OpenOffice
Propojení OpenOffice.org s databází
Tvorba databázových formulářů v OpenOffice.org

Odkazy a zdroje

MySQL
OpenOffice.org CS
unixODBC

Další články z této rubriky

VDR a DVB-T2, část 2.
VDR a DVB-T2, část 1.
Šifrovaný Proxmox VE 6: ZFS, LUKS, systemd_boot a Dropbear
MapTiler – proměňte obrázek v zoomovatelnou mapu
Syncthing

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.