首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从C连接Ingres

从C连接Ingres
EN

Stack Overflow用户
提问于 2009-07-21 10:42:45
回答 2查看 1.6K关注 0票数 2

我需要连接到通过OpenAPI (运行在windows上的Ingres和C应用程序)提供的Ingres。我所做的:

  1. 在Ingres网络实用程序中创建了一个名为"usernode“的”节点“。
  2. 在Ingres安装(名为" user“密码”user "user")和Windows用户管理(相同的creds)中创建用户帐户。
  3. 授予数据库中的用户必要的权限。
  4. 在C代码中,我使用IIapi_connect()函数调用了IIAPI_CONNPARM结构。已使用的成员: co_target = "usernode::demodb",co_username = "user",co_password = "user“

但是IIapi_connect()调用返回一个错误:

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

有人知道什么是奇怪的概念“节点”吗?

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-07-22 06:09:55

您将得到以下错误,因为您的用户id尚未添加到服务器。

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

我猜想正在传递的用户id是在虚拟节点(又名node )定义中定义的,并且需要将用户添加到服务器上的用户列表中。下面将从命令行添加一个用户,将用户名更改为您希望添加的用户名:

适用于Windows:

代码语言:javascript
复制
echo "create user USERNAME\g" | sql iidbdb

对于UNIX/Linux/OS:

代码语言:javascript
复制
sql iidbdb <<EOSQL
create user USERNAME\g
\q

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

代码语言:javascript
复制
@server,protocol,listen_address[user,password]::database

例如

代码语言:javascript
复制
@localhost,tcp_ip,II[ingres,secret]::iidbdb

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

票数 2
EN

Stack Overflow用户

发布于 2009-07-21 12:12:17

  1. 您必须在操作系统中创建一个带有密码的帐户。
  2. 您必须创建一个具有与操作系统相同的用户名和密码的节点。不要忘记将“”块中的"Remote“参数分配给"localhost”(!)例如。这是真正的地址(!)。“侦听地址”参数在内部转换为端口。别管"II“了。
  3. 在VDBA中,您可能已经在管理节点中创建了一个“用户”帐户。因此,该帐户不应该有任何密码(!)。您可以通过输入现有密码复选框“删除旧密码”来删除它。
  4. 对于授权,通常应该使用进程的凭据。
  5. 因此,只保留user::demodb参数co_target = "usernode::demodb“。

有什么问题吗?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1158434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档