PDA

View Full Version : ODBC Connection from linux


brusick
November 20th, 2017, 05:41 AM
Hello,

I'm trying to connect using ODBC from linux.
I dried connecting using the db folder of commitcrm localy mounted on the computer, and using //serverip:6262 in the "DataDirectory" key but none of them worked.
I get the following error:
Error 6060: Advantage Database Server not available on specified server. axServerConnect

Do you have an idea of what could be wrong?

Best regards

Support Team
November 20th, 2017, 08:20 AM
Thank you for posting this. It seems that you were trying to connect to a data dictionary instead of to a "folder" and this will not work as dictionaries are not being used. You need to try to point to the data folder (\RangerMSP\Db) and see how it goes.

brusick
November 20th, 2017, 09:04 AM
Hello,

I mounted the CommitCRM share from the server hosting CommitCRM (172.16.200.22) on /mnt/commit locally so I tried putting /mnt/commit/Db in the DataDirectory key in odbc.inc
But it didn0t help
And I also tried the following values for DataDirectory:
\\172.16.200.22\Commit\Db
\\172.16.200.22:6262\Commit\Db
//172.16.200.22/Commit/Db
//172.16.200.22:6262/Commit/Db
172.16.200.22:6262

Is there another parameter I should check?

I test using:
$ isql -v ADS
[S1000][unixODBC][iAnywhere Solutions][Advantage SQL][ASA] Error 6060: Advantage Database Server not available on specified server. axServerConnect
[ISQL]ERROR: Could not SQLConnect


My odbc.ini is:
[ODBC Data Sources]
ADS = Advantage ODBC Driver

[ADS]
Driver=ADS
DataDirectory=\\172.16.200.22:6262\Commit\Db
Description=Advantage ODBC driver
Rows=False
MemoBlockSize=64
DefaultType=Advantage
MaxTableCloseCache=0
LOCKING=Record
CharSet=OEM
ADVANTAGELOCKING=OFF
ServerTypes=3
TableExtension=


And my odbcinst.ini:
[ADS]
Description = ODBC for ADS
Driver = /usr/lib/libadsodbc.so.10.10.0.49
Setup = /usr/lib/libadsodbc.so.10.10.0.49
FileUsage = 1

Support Team
November 20th, 2017, 11:16 AM
The port should not be specified as part of the DataDirectory path, so please remove it.
On the Linux box, mount the shared directory as a CIFS/Samba share.
Then - verify that in Linux command shell you can list the files in the path your trying to connect to.

Next - verify that IPTables, or whatever firewall your have installed on your Linux machine, allows traffic on the port the SQL database engine works with, it seems to be 6262 in your case.

Verify that the Windows server does not block http/udp connections from the Linux machine (Windows firewall...).

Also, change ServerTypes from 3 to 2.

Give it a try.

brusick
November 21st, 2017, 03:11 AM
Hello,

I have adsodbc-10.10.0.49 installed on the linux machine
The commitCRM version is 16.0.0.6 with Advantage 10.10 on the same windows server.
The db is on the share //172.16.200.22/Commit in the Db folder.
I mounted this cifs share on /mnt/Commit, I can list all files in the Db folder
Firewall is disabled on both machines. Both machines are on the same network.
I tried with both ServerTypes 3 and 2
When I try to connect to the tcp port 6262 it answers corectly.

I still get the same error message. What should I put exactly in odbc.ini ?
Should I put the path to the mounted Db folder or the path to this folder on the server, and with which notation?
If I put the local path, how does it now where to find the server?

Best regards

Support Team
November 21st, 2017, 06:09 AM
The DataDirectory value should be \\172.16.200.22\RangerMSP\Db - though if you have a mapped drive for this you can use it instead of the IP address.

I would also double check firewalls on both machines as well as that UDP is also allowed on both machines.

Oh, also try this - you may need $ODBCINI to be set (change to the relevant path)

export ODBCINI="/etc/" (if your odbc.ini and odbcinst.ini files are in /etc)


Hope this helps.

brusick
November 21st, 2017, 06:41 AM
I tried the export, but it doesn't change (it was already using the correct odbc.ini and osbcinst.ini)

There is really no firewall in any of the two machine which are directly connected.

If I put the local path to the mounted share, how does it find the server to interact with it?
And if I put the path to the share how does it know the credentials to use?

Support Team
November 21st, 2017, 06:51 AM
Thanks for the update.

It should point to the Windows share where the database is actually located.
Without a dictionary, that is not being used, you won't need anything else besides permissions to the share, as set at the domain/server level.

Beyond that we're not sure what else to recommend for the Linux box. Maybe first verify (maybe you have already) that you manage to connect from a Windows machine with ODBC and only then continue with the Linux box.

You may also use an ADS.ini that teaches the system where the database server is, though that's normally the solution for a 6420 error, and you see 6060 on your Linux machine. Give it a try.