Jeroen Willems wrote:
Currently, I'm using an Informix 9.x database, running on a Solaris 6 machine.
I've built an application around this database server, using

- Perl 5.6.0 ,
- Tk800.20 ,
- DBI  1.13 and
- DBD:Informix

all compiled on a Solaris 6 machine using an older Informix 7.x server.

The key Informix component is CSDK or ESQL/C (which is used by client programs such as Perl to communicate with the database server) - rather than the database server itself. Which version of CSDK or ESQL/C did you use on the Solaris 6 machine? Which version of CSDK or ESQL/C is installed on the Solaris 8 machine? Which version of DBD::Informix? Why are you not using Perl 5.6.1? DBI 1.32 or 1.35?


The application runs very well on Solaris 6 clients, but using a Solaris 8 client, the following error is generated:

DBI->connect failed: SQL: -25572: Network driver cannot bind a name to the port.

Can you get DB-Access (or any other ESQL/C program) to connect to the Solaris 6 database from the Solaris 8 server? If not, you have a basic connectivity problem unrelated to Perl and DBD::Informix. If so, then you have managed to find a weirdity in DBD::Informix, but one issue would again be "which version of CSDK or I-Connect do you have installed on the Solaris 8 box"?


<<<<< Informix reports the following about the error nr:


-25572 Network driver cannot bind a name to the port.


A system call has failed. The sqlexecd daemon or database server cannot
access the network port that is specified by the servicename in the
sqlhosts file. This situation might occur because the network port is
already in use by another sqlexecd, database server, or other
application. Use a different servicename on the command line (prior to
Version 6.0) or in the sqlhosts file (beginning with Version 6.0).
Contact your system administrator for assistance.
<<<<<

However, using dbaccess on a Solaris 8 machine does not report
network errors.

Can anything be inferred from the reference to 'a Solaris 8 machine' rather than 'the Solaris 8 machine'? Probably not, but I'm checking.


Which version of DB-Access is this? Note that if you have DB-Access on the Solaris 8 box, it implies there is also a server on it too - so are you sure you're accessing the remote database with DB-Access? You probably are, but I have to ask - just in case. Exactly what software do you have installed on the Solaris 8 box?

Do you have INFORMIXSERVER set correctly in the Solaris 8 environment? DBD::Informix records the value of INFORMIXSERVER at the time it is built (in most recent versions - probably including those that pre-date 1.00.PC1), so one possibility is that you've got an invalid value of INFORMIXSERVER in use.

Did you compile with DBD_INFORMIXDIR_RELOCATABLE_INFORMIXDIR set, or are you relying on the CSDK or I-Connect code existing in the same place on both machines? If you are using a relocatable INFORMIXDIR, you need to worry about LD_LIBRARY_PATH etc. I don't think that's the issue here - you'd be getting different failures if it was.

Are /etc/services and $INFORMIXDIR/etc/sqlhosts set up correctly on both machines - with the same value for the service number and service name on both machines?

Could there be issues with IPv6? Probably not if DB-Access is connecting to the remote machine.

Do I need to compile the DBD:Informix module on a Solaris 8 machine?

Maybe, but theoretically not. Of course, it depends on many factors, such as did you copy Perl across to Solaris 8 too, or are you using the built-in version, or a version of your own compiling? How did you ensure that the correct files were copied across. Did you simply copy the Solaris 6 version of Perl verbatim to Solaris 8?


I am inclined to think that you would do better with a version of
Perl compiled for Solaris 8, but it is not, theoretically, necessary
to do so.


--
Jonathan Leffler ([EMAIL PROTECTED], [EMAIL PROTECTED]) #include <disclaimer.h>
Guardian of DBD::Informix v2003.04 -- http://dbi.perl.org/




Reply via email to