从C连接Ingres

时间:2009-07-21 10:42:45

标签: ingres

我需要通过OpenAPI连接到Ingres提供的demodb,在Windows上运行Ingres和C应用程序。我做了什么:

  1. 在Ingres网络实用程序中创建名为“usernode”的“节点”。
  2. 在Ingres安装中创建用户帐户(名为“用户”密码“user”)和Windows用户管理(相同的信用卡。)
  3. 为数据库中的用户授予必要的权限。
  4. 在C代码中,我使用IIAPI_CONNPARM结构调用了IIapi_connect()函数。 二手会员: co_target =“usernode :: demodb”, co_username =“user”, co_password =“user”
  5. 但是IIapi_connect()调用会返回错误:

    “用户提供了一个vnode作为数据库名称(vnode :: dbname)的一部分,但缺少该vnode的连接信息。使用NETUTIL输入vnode的连接信息。”

    有人知道一些奇怪的概念“节点”吗?

    成功连接所需的最小步骤(在数据库管理和函数参数传递中)是什么?

2 个答案:

答案 0 :(得分:2)

您收到以下错误,因为您的用户ID尚未添加到服务器中。

  

“用户提供了一个vnode作为其中的一部分   数据库名称(vnode :: dbname),但是   该vnode的连接信息   不见了。输入连接   使用vnode的信息   NETUTIL“。

我猜测传递的用户ID是在虚拟节点(又名vnode)定义中定义的,并且需要将该用户添加到服务器上的用户列表中。以下内容将从命令行添加用户,将USERNAME更改为您要添加的用户名:

对于Windows:

echo "create user USERNAME\g" | sql iidbdb

对于UNIX / Linux / OS X:

sql iidbdb <<EOSQL
create user USERNAME\g
\q

或者,您可以在连接中使用动态vnode,以便 co_target 指定所有连接信息(包括用户详细信息):

@server,protocol,listen_address[user,password]::database

例如

@localhost,tcp_ip,II[ingres,secret]::iidbdb

如果您想查看Ingres的OpenAPI代码的工作示例,请查看Ingres PECL扩展名。

答案 1 :(得分:1)

  1. 您必须在操作系统中创建一个带有密码的帐户。
  2. 您必须在操作系统中创建一个具有SAME用户名和密码的节点。例如,不要忘记将“连接信息”块中的“远程节点”参数分配给“localhost”(!)。这是一个真实的地址(!)。 “监听地址”参数在内部转换为端口。留下“II”。
  3. 在VDBA中,您可能已在ADMIN NODE中创建了一个“用户”帐户。所以,该帐户不应该有任何密码(!)。您可以通过输入现有密码复选框“删除旧密码”来删除它。
  4. 对于授权,通常应使用进程'凭证。
  5. 所以,只留下user :: demodb参数co_target =“usernode :: demodb”。
  6. 有问题吗?