1

SWI Prolog (ODBC ドライバーを使用) を使用してローカルの MySQL データベースに接続しようとしていますが、次のエラーが表示されます。

?- [family].
% family compiled 0.00 sec, 264 bytes
true.

?- open_db.
ERROR: ODBC: State S1090: [unixODBC][Driver Manager]Invalid string or buffer length

データベース名: prolog_test

プロローグ コード (family.pl)

open_db :-
    odbc_connect('mysql:dbname=prolog_test;host=localhost', _,
                 [ user('prologuser'),
                   password('prologpass'),
                   alias(localhost),
                   open(once)
                 ]).

children(X) :-
    odbc_query(localhost, 'SELECT (lemma) FROM tableName',X).

助けてくれてありがとう

4

2 に答える 2

1

ここここの指示に従ってください。

ファイルを作成します: /etc/odbc.ini

[ODBC Data Sources]
odbcname     = MyODBC 3.51 Driver DSN

[prologtest]
Driver       = /usr/lib/odbc/libmyodbc.so
Description  = MyODBC 3.51 Driver DSN
SERVER       = my.database.server.com
PORT         =
USER         = USER
Password     = XXXXXX
Database     = DBNAME
OPTION       = 3
SOCKET       =

[Default]
Driver       = /usr/local/lib/libmyodbc3.so
Description  = MyODBC 3.51 Driver DSN
SERVER       = localhost
PORT         =
USER         = root
Password     =
Database     = test
OPTION       = 3
SOCKET       =

私のマシンでは、libmyodbc.so は /usr/lib/x86_64-linux-gnu/odbc/libmyodbc.so にあります。

Prolog コードを (ドキュメントにより近い)に変更しました。

  1 open_wordnet :-
  2         odbc_connect('prologtest', _,
  3                      [ user('prologuser'),
  4                        password('prologpass'),
  5                        alias(prologa),
  6                        open(once)
  7                      ]).

これで、データベースにクエリを実行できるようになりました

于 2013-04-10T01:42:30.337 に答える