Some Linux issues

Some Linux issues

Discuss the source code and development of Spring Engine in general from a technical point of view. Patches go here too.

Moderator: Moderators

Post Reply
User avatar
PauloMorfeo
Posts: 2004
Joined: 15 Dec 2004, 20:53

Some Linux issues

Post by PauloMorfeo »

I'm using Fabforce's free database designing tool, DBDesigner in my Suse Linux.
The server is suposed to be started. With root,

Code: Select all

linux:/home/paulo # rcmysql start
Starting service MySQL                                               done
linux:/home/paulo # rcmysql status
Checking for service MySQL:                                      running
But when i try to connect to the database, he gives me an error saying:
"Connection to database failed.
Unable to Load libmysqlclient.so"
I searched for such file and i have similar ones like libmysqlclient4.0.so or something like that.

Can someone tell me what may be wrong?
User avatar
munch
Posts: 311
Joined: 26 May 2005, 20:00

sym link and/or LD_LIBRARY_PATH

Post by munch »

Hi Paul,

I have a Suse install myself (10.0), but I must admit I'm more familiar with UNIX (Solaris) so the following advice may not be too helpful. However that said, it looks to me like the file name is probably wrong and/or you may be missing the appropriate entry on one of your PATHs.

First off, go to the directory with the mysql .so file in it, and put in a sym-link* that has the correct name:

Code: Select all

ln -s libmysqlclient.so libmysqlclient4.0.so

Now try running the app again. If it still fails, check your PATH and your LD_LIBRARY_PATH to see if it includes the directory where the required .so file resides. If the directory is missing....

LD_LIBRARY_PATH used to be used for dynamic loading, so try adding it to that first. For example if the file was in the /usr/local/blah directory:

Code: Select all

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/blah
Now try your app again, if it still fails repeat the above, but for your PATH. And try once more. If it still fails, then the name of the path that is searched for .so files is probably something different these days. Linux forums are usually pretty helpful at answering this sort of question though.

Assuming you do need one of the PATH fixes, you'll need to get the environment set up correctly otherwise you'll need to type this everytime you run the application. You can either put the command into the program's startup script (you may have to create one if it isn't currently started from a script), or else you can put it into your .profile (assuming you're using bash). The startup script is normally the prefered option as it caters for all users, however if this is for a machine which only you will be logging in to, you can get away with putting it into your .profile.

Final caveat, I'm not at a UNIX machine right now, so I haven't been able to check on the above - I may well have made a tiny typo which could easily break everything.

I hope it helps

Cheers

Munch

* the UNIX philosophy for dynamic libraries (i.e. .so files) is very different from that of Windows. Whereas windows just overwrites an old DLL with a new one when a new version comes along, the UNIX way of doing things is to number your dynamic libraries with their version number. That way the file names are all unique and you don't need to overwrite them, you can keep multiple versions and don't have to risk breaking applications that use older versions. The way you approach it is to put a sym-link in to the latest version so that is the default that everybody picks up, but if a particular program needs an earlier version, you just change the LD_LIBRARY_PATH in its start-up script and make it pick up a symlink to a different version. E.g. you could put this in the app's install directory.
Post Reply

Return to “Engine”