I'm on Ubuntu 16.04 x64, and I've set up both PostgreSQL and ODBC. Or I almost have; when I execute some scheme code from guile, it outputs the following error:
Can't perform SQLConnect rc=-1(201) [unixODBC]Missing database name in call to CC_connect.
I think that I made some pretty simple mistake, but I can't figure out which files i should tinker with to fix it. So, my question is: which files are being looked at to find that database name, or, failing to answer that, is there a way to trace guile code?
Okay, update: the logs look like this:
CONN ERROR: func=original_CC_connect, desc='', errnum=201, errmsg='Missing database name in call to CC_connect.'
------------------------------------------------------------
henv=0x3dec0d0, conn=0x3ffd280, status=0, num_stmts=16
sock=(nil), stmts=0x3ffddd0, lobj_type=-999
---------------- Socket Info -------------------------------
CONN ERROR: func=PGAPI_Connect, desc='Error on CC_connect', errnum=201, errmsg='Missing database name in call to CC_connect.'
------------------------------------------------------------
henv=0x3dec0d0, conn=0x3ffd280, status=0, num_stmts=16
sock=(nil), stmts=0x3ffddd0, lobj_type=-999
---------------- Socket Info -------------------------------
DSN info: DSN='triples',server='',port='',dbase='',user='',passwd=''
onlyread='',protocol='',showoid='',fakeoidindex='',showsystable=''
conn_settings='(null)', conn_encoding='(null)'
translation_dll='',translation_option=''
conn = 0x3fff340, PGAPI_Connect(DSN='triples', UID='opencog_user', PWD='xxxxx')
Driver Version='09.03.0300,201405140001'
Global Options: fetch=100, socket=4096, unknown_sizes=0, max_varchar_size=255, max_longvarchar_size=8190
disable_optimizer=0, ksqo=1, unique_index=1, use_declarefetch=0
text_as_longvarchar=1, unknowns_as_longvarchar=0, bools_as_char=1 NAMEDATALEN=64
extra_systable_prefixes='dd_;', conn_settings='(null)' conn_encoding=''
Edit: the whole issue is available on github
As far as I could see in the github issue (I did not see the sources), the problem is in the configuration file. It seems that upon connection, all you specify is the DSN name '
triples
'. So, the system will look after a section named 'triples
' in your config file. Theobdc.ini
file can reside in the user directory or in/etc
. This means you should have in one of these files (I suspect/etc/odbc.ini
) something like: