0
votes

I'd like to pull out data from the Cisco UCCX database (Informix) with a Python script.

After installing the Informix Client SDK and pyodbc as described in this guide, I run the following connection:

pyodbc.connect('SERVICE=1504;PROTOCOL=onsoctcp;CLIENT_LOCALE=en_US.UTF8;DB_LOCALE=en_US.UTF8;DRIVER={IBM INFORMIX ODBC DRIVER (64-bit)};UID=uccxhruser;PWD=my_pwd;DATABASE=db_cra;HOST=my-uccx;SERVER=my-uccx_uccx')

But I get the following error:

Error: ('HY000', '[HY000] [Informix][Informix ODBC Driver][Informix]INFORMIXSERVER does not match either DBSERVERNAME or DBSERVERALIASES. (-761) (SQLDriverConnect)')

How can I fix this?

1
On the face of it, you've set the environment variable $INFORMIXSERVER (or specified its value in the connection string) to an incorrect value. Server names should not include dashes, so it might be that SERVER=my-uccx_uccx in the connection string is faulty, or it may be somewhere else. I'd hazard a guess that your server is my_uccx_uccx instead — but that's a guess. Knowing what is specified for the actual server will be crucial.Jonathan Leffler
Ok I'll check this out, does the variable INFORMIXSERVER correspond to the SERVER param in the connection string?floatingpurr
That is information I don't have — there's a decent chance that SERVER in the connection string matches INFORMIXSERVER as an environment variable, but I don't know for sure.Jonathan Leffler
According to the guide I posted in the question, there's no need to set INFORMIXSERVER explicitly. Maybe things are like your guess. I'll try to verify the UCCX/Informix server name.floatingpurr
Whooooaaaa! Turned out that the server name was my_uccx_uccx instead of my-uccx_uccx and now it works. If you turn your comment into an answer, I'd be happy to accept it!floatingpurr

1 Answers

2
votes

Converting comments into an answer.

On the face of it, you've set the environment variable $INFORMIXSERVER (or specified its value in the connection string) to an incorrect value. Server names should not include dashes, so it might be that SERVER=my-uccx_uccx in the connection string is faulty, or it may be somewhere else. I'd hazard a guess that your server is my_uccx_uccx (an underscore instead of a dash) instead — but that's a guess. Knowing what is specified for the actual server will be crucial.

Does the variable INFORMIXSERVER correspond to the SERVER param in the connection string?

That is information I don't have — there's a decent chance that SERVER in the connection string matches INFORMIXSERVER as an environment variable, but I don't know for sure.

Given the later success, it is probable that SERVER in the connection string corresponds to INFORMIXSERVER in the environment.

Whooooaaaa! Turned out that the server name was my_uccx_uccx instead of my-uccx_uccx and now it works.

Great — I'm glad you're up and running.