› Clovertech Forums › Read Only Archives › Cloverleaf › Cloverleaf › ODBC: libODBC6.so not found
In the early stages of implementing ODBC Drivers.
I get the following Tcl error when doing the ‘package require odbc’ from within the engine (it works fine within hcitcl):
couldn’t load file :/quovadx/qdx5.2/integrator/tcl/lib/odbc../libODBC6.so”: No such file or directory
However the libODBC6.so file DOES live in /quovadx/qdx5.2/integrator/lib directory NOT in the /quovadx/qdx5.2/integrator/tcl/lib/odbc directory.
Could there be something incorrect in some environment setting or does the Host Server need to be restarted (seeing as how this malfunctions in the engine but not hcitcl), or ????
Thanks,
Jim Kosloskey
email: jim.kosloskey@jim-kosloskey.com 29+ years Cloverleaf, 59 years IT - old fart.
[ODBC]
IANAAppCodePage=4
InstallDir=/hci/qdx5.3/integrator/lib/Connect4.2
Trace=0
TraceDll=/hci/qdx5.3/integrator/lib/Connect4.2/lib/odbctrac.so
TraceFile=odbctrace.out
UseCursorLib=0
(Our odbc.ni resides here:
/hci/qdx5.3/integrator/lib/Connect4.2)
I don’t think the host server needs to be restarted. In fact, we run our production site with the host server always turned off.
Hope that helps.
– Glenn
How are you doing?
Our odbc.ini file is intact, located properly, and functions. I do not think that is the problem.
My guess is the module being looked for is not pre loaded (may be due to a environment variable not being set) and the odbc package is trying to load it but has the incorrect location.
Then again I could be way out in left field.
Thanks for the information regarding the Host Server. It is low on my candidate list.
Jim Kosloskey
email: jim.kosloskey@jim-kosloskey.com 29+ years Cloverleaf, 59 years IT - old fart.
Thanks.
So the file lives in the correct place but the odbc package is trying to load them from the wrong location – it appears.
Again I suspect Cloverleaf(R) engine expects this to be preloaded and in my case it is not so the odbc package is trying to locate the file and doing it incorrectly. At least that is my theory at this time.
If my theory is correct, I need to find out how that file is supposed to be loaded correctly.
Jim Kosloskey
email: jim.kosloskey@jim-kosloskey.com 29+ years Cloverleaf, 59 years IT - old fart.
Re your incorrect *.so file location theory there may be some auto_path issue, I think odbc looks for its “so” files in the “LIBPATH” topic defined in the “odbcInfo” file(s)
On our box we have one odbcInfo file in the /hci/qdx5.3/integrator/lib/
directory (contents shown below)
$ cat /hci/qdx5.3/integrator/lib/odbcInfo
default=Connect4.2hci@ba(qted):/hci/qdx5.3/integrator/lib/Connect4.2
A second odbcInfo file in the “default” dir has a LIBPATH setting that references where all the so files all reside
$ cat /hci/qdx5.3/integrator/lib/Connect4.2/odbcInfo
LIBPATH=/hci/qdx5.3/integrator/lib/Connect4.2/lib
ODBCINI=/hci/qdx5.3/integrator/lib/Connect4.2/odbc.ini
I know we had some problems finding the “so” files when we changed versions from Connect 3.? to 4.2 but it was because the the odbc.ini “driver” names changed slightly with the new versions – the last 2 digits in the Driver settings seemed to be a version number. However, that problem happens when SQLCOnnect was called.
hope this helps
I thought that your original post said that your libODBC6.so file was actually at /quovadx/qdx5.2/integrator/lib ? That is what I thought was incorrect, as they should be at /quovadx/qdx5.2/integrator/tcl/lib (at least they are here, and that is where the error says its looking)
If I mis-understood, please disregard.
Thanks – I will take a look. That certainly seems like a good candidate.
Jim Kosloskey
email: jim.kosloskey@jim-kosloskey.com 29+ years Cloverleaf, 59 years IT - old fart.
OK
$HCIROOT/tcl/lib is where the libODBC6.so file lives,
$HCIROOT/tcl/lib/odbc is where it is being looked for.
So maybe it is not in the correct location.
The package that is trying to reference it is ifneeded which is being invoked by the package odbc. My thinking is that the file libODBC6.so should be resident when the engine starts and the the ifneeded package is used only when the odbc package does not see the code resident and decides to go get it. Then ifneeded has an incorrect location.
However, based on what you are indicating, the $HCIROOT/tcl/lib/odbc directory is the correct location.
Curiouser and curiouser…
Thanks,
Jim Kosloskey
email: jim.kosloskey@jim-kosloskey.com 29+ years Cloverleaf, 59 years IT - old fart.
Sorry to be a bit vague but we had the same problem and I think (the vague bit) that ODBC6 is part of a later version of the Cloverleaf ODBC library – So I think you need to upgrade.
Not sure why it happens though.
Regards
Garry
Sorry for the confusion. I think your files are where they should be. I guess the curious thing is that you can invoke the ‘package require odbc’ from hcitcl. Back when I was having problems getting going, I was getting an error doing that…
Thanks for all the assistance.
We got that working and all we needed to do was to cycle the Host Server for Cloverleaf(R).
This apparently was not done following the install. That is why it worked with hcitcl and not in the engine.
Something to remember.
Jim Kosloskey
email: jim.kosloskey@jim-kosloskey.com 29+ years Cloverleaf, 59 years IT - old fart.
Similar problem with Cloverleaf 6.0. Just installed Data Integrator and have the license keys.
I’m running a tcl that has ODBC calls that is executed within a Xlate Copy action. Getting this error message:
couldn’t load file “/hci/cis6.0/integrator/tcl/lib/odbc/../libODBC11.so”: 0509-022 Cannot load module /hci/cis6.0/integrator/tcl/lib/odbc/../libODBC11.so.
0509-150 Dependent module libodbc.a(odbc.so) could not be loaded.
0509-022 Cannot load module libodbc.a(odbc.so).
0509-026 System error: A file or directory in the path name does not exist.
0509-022 Cannot load module /hci/cis6.0/integrator/tcl/lib/odbc/../libODBC11.so.
0509-150 Dependent module /hci/cis6.0/integrator/tcl/lib/odbc/../libODBC11.so could not be loaded.
while executing
“load /hci/cis6.0/integrator/tcl/lib/odbc/../libODBC11.so”
(“package ifneeded odbc 11.0” script)
invoked from within
“package require odbc”
(procedure “VirtualBedGetNextAvail” line 28)
Our odbcInfo has the correct LIBPATH pointing to the library where the libodbc.a is located; also in that directory is a link:
lrwxrwxrwx 1 hci staff 7 Apr 30 10:36 libodbc.so -> odbc.so
Hopefully this is a simple configuration issue. I can run hcitcl from the command line and everything works fine; its just the execution from a translate of a tcl that calls odbc.
The problem seems to occur with the ‘package require odbc’ statement itself, perhaps in the dynamic loading of the libraries; I’m not familiar with tcl libraries, dynamic loading and the environment (libpath) existing in the Translate / thread / process. I did restart the process several times.
Any hints for installation or configuration changes? Does anything else have to be restarted?
This server has both 5.8 and 6.0 software installed.
Peter Heggie
Peter,
Did you re-cycle the Cloverleaf Host Server?
email: jim.kosloskey@jim-kosloskey.com 29+ years Cloverleaf, 59 years IT - old fart.
Yes I did but I will do it again. Because of HACMP and having our prod environment still on 5.8, the /etc/environment file was pointing to 5.8; I can’t update that, so I’m temporarily trying to override the .profile for hci, to set the CL_INSTALL_PATH to 6.0 and recycle the host server and process.
Peter Heggie
That was it. I updated .profile for the user hci to explicitly set the CL_INSTALL_PATH instead of using what is in /etc/environment, and it worked. At least, it loaded the libraries correctly! Now I’m just working on programming issues.
thanks much!
Peter Heggie