OpenEdge 10.2B and ODBC Linux connection?

vakpal

Member
Hi.

I just try to make ODBC connection from Linux client (Ubuntu 6.06, i know Redhat and Suse supported but Ubuntu is not.)

Server is Suse Linux with OE 10.2B (it can be Windows too), Client is Ubuntu 6.06 with Apache and PHP. Same configuration is worked if Database server Progress9.1E.

Now i have error and i realy don't have more idea....
"libpgicu23.so: cannot open shared obejct file: No such file or directory"

I found some help on progress.com like : http://progress.atgnow.com/esprogre...5002&docProp=$solution_id&docPropValue=p21252

Anybody have idea..?

Thanks

Regards:
Pal.
 

vakpal

Member
OK Next step :)

I don't know why, but it just make a link ("ln") to /usr/lib diretory from two so file libpgicu23.so and pgoe1023.so...
So the ODBC connection is works...
But i've got another message (Not a realy error, it most like warning :) ), but it still not works.

Warning: odbc_exec(): SQL error: , SQL state 00000 in SQLExecDirect in /opt/portal/test.php on line 13
Warning: odbc_connect(): SQL error: [unixODBC][DataDirect][ODBC 20101 driver]6015, SQL state 7 in SQLConnect in /var/www/info.php on line 7
Warning: odbc_connect(): SQL error: [unixODBC][DataDirect][ODBC 20101 driver]1509, SQL state 60 in SQLConnect in /var/www/info.php on line 7

SQL state 00000 : It means no error :)

Strange....

My be it is usefull for somebody....

If i have next step, i will come.. :)
 

vakpal

Member
Next Step :)

It have some mistake in odbc.ini and odbcinst.ini. Most important thing, in PHP the driver can't see the enviroment variables.
So i just put in to top of my php test file.
PHP:
putenv("DLC=/usr/dlc102b");
putenv("LD_LIBRARY_PATH=/usr/dlc102b/odbc/lib:/usr/dlc102b/lib");
putenv("ODBCINI=/usr/dlc102b/odbc/odbc.ini");
putenv("ODBCINST=/usr/dlc102b/odbc/odbcinst.ini");
It mutch better but not enough....
I give some intresting errors. Example : /usr/dlc102b/odbc/lib/pgoe1023.so couldn't open.

First of all it need to copy (cp) or make a link (ln) to "/usr/lib" from pgoe1023.so and libpgicu23.so.

Second, there is one required file libstdc++-libc6.2-2.so, this is available in libstdc++2.10-glibc2.2 package (http://packages.ubuntu.com/dapper/i386/libstdc++2.10-glibc2.2/download)

After it can be work :)

(ODBC user need permissions for SELECT)


Last thing the "DefaultIsolationLevel" in odbc.ini.
https://progress.atgnow.com/esprogr...EDocHTML/OpenEdge/10.0B/dmsdv/dmsdv-10-1.html

READ UNCOMMITTED
Also called a “dirty read.” When this isolation level is used, a transaction can read uncommitted data that later may be rolled back. A transaction that uses this isolation level can only fetch data but can’t update, delete, or insert data.

READ COMMITTED
With this isolation level dirty reads are not possible, but if the same row is read repeatedly during the same transaction, its contents may be changed or the entire row may be deleted by other transactions.

REPEATABLE READ
This isolation level guarantees that a transaction can read the same row many times and it will remain intact. However, if a query with the same search criteria (the same WHERE clause) is executed more than once, each execution may return different set of rows. This may happen because other transactions are allowed to insert new rows that satisfy the search criteria or update some rows in such way that they now satisfy the search criteria.

SERIALIZABLE
This isolation level guarantees that none of the above happens. In addition, it guarantees that transactions that use this level will be completely isolated from other transactions.

If you forgot to change Isolation Level, the SQL SELECT result row numbert can't be biger than Lock Table Limit!

It can works Ubuntu 6.06 and 10.04 LTS/10.10.
 
Top