↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

不受支持的版本: 7.0 / 6.5
历史版本PostgreSQL 7.0 已于 2005 年 5 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本手册首页。

57.5. ApplixWare

57.5.1. 配置

ApplixWare必须被正确配置,才能访问 Postgres的ODBC 软件驱动。

启用ApplixWare数据库访问

这些说明针对的是Linux上的 ApplixWare 4.4.2 版。 更详细的信息请参阅Linux Sys Admin在线图书。

  1. 你必须修改axnet.cnf,让 elfodbc能找到libodbc.so (ODBC驱动管理器)共享库。这个库随 ApplixWare 发行版一起提供,但axnet.cnf 需要被修改为指向正确的位置。

    以 root 身份编辑文件 applixroot/applix/axdata/axnet.cnf。

    1. 在axnet.cnf的底部, 找到以

      #libFor elfodbc /ax/...
               
      
    2. 把这一行改为

      libFor elfodbc applixroot/applix/axdata/axshlib/lib
               
      

      这会告诉elfodbc到这个目录中查找 ODBC支持库。通常 Applix安装在 /opt,因此完整路径是 /opt/applix/axdata/axshlib/lib, 但如果你把Applix安装在了 其他地方,请相应地修改路径。

  2. 按照上面的说明创建.odbc.ini。 你可能还想加上标志

    TextAsLongVarchar=0
           
    

    加到.odbc.ini的数据库特定部分,这样文本 字段就不会显示为**BLOB**。

测试ApplixWare ODBC 连接

  1. 启动Applix Data

  2. 选择你感兴趣的Postgres数据库。

    1. 选择Query->Choose Server。

    2. 选择ODBC,然后点击Browse。 你在.odbc.ini中配置的数据库应该会被显示 出来。确保Host: field为空(如果不为空,axnet 会试图联系另一台机器上的 axnet 来查找数据库)。

    3. 在Browse弹出的框中选择数据库, 然后点击OK。

    4. 在登录标识对话框中输入用户名和口令, 然后点击OK。

    你应该会在数据窗口左下角看到 "Starting elfodbc server"。如果你得到一个 错误对话框,请参见下面的调试一节。

  3. 'Ready'消息会出现在数据窗口左下角。这表示你现在可以输入 查询了。

  4. 从 Query->Choose tables 中选择一张表,然后选择 Query->Query 来访问数据库。表中前 50 行左右应该会出现。

57.5.2. 常见问题

在试图通过Applix Data建立 ODBC连接时可能出现下列消息:

Cannot launch gateway on server

elfodbc找不到libodbc.so。 检查你的axnet.cnf。

Error from ODBC Gateway: IM003::[iODBC][Driver Manager]Specified driver could not be loaded

libodbc.so找不到 .odbc.ini中列出的驱动。核对设置。

Server: Broken Pipe

驱动进程由于某种其他问题已经终止。你可能没有最新版本的 Postgres ODBC包。

setuid to 256: failed to launch gateway

ApplixWare 4.4.1 的九月版(第一个在 Linux 下正式支持 ODBC的版本)在用户名长度超过 八(8)个字符时会出问题。问题描述由 Steve Campbell提供。

作者

由Steve Campbell 于 1998-10-20 供稿。

axnet 程序的安全系统看起来有点可疑。axnet 代表用户做事,而在真正的多用户系统上,它其实应该以 root 权限运行(这样它才能在每个用户的目录中读/写)。不过我不太愿意这样建议,因为我们完全不知道这会带来什么安全漏洞。

57.5.3. 调试ApplixWare ODBC 连接

调试连接问题的一个好工具是 Unix 系统实用程序 strace。

用strace调试

  1. 启动 applixware。

  2. 对 axnet 进程启动strace。例如,如果

    % ps -aucx | grep ax 
           
    

    shows

    cary   10432  0.0  2.6  1740   392  ?  S  Oct  9  0:00 axnet
    cary   27883  0.9 31.0 12692  4596  ?  S   10:24  0:04 axmain
           
    

    然后运行

    % strace -f -s 1024 -p 10432
           
    
  3. 检查 strace 输出。

    来自 Cary 的提示

    ApplixWare的许多错误消息会发往 stderr,但我不确定stderr 被送到了哪里,所以strace是查明这一点的 手段。

例如,在得到"Cannot launch gateway on server" 之后,我对 axnet 运行了 strace,得到

[pid 27947] open("/usr/lib/libodbc.so", O_RDONLY) = -1 ENOENT
(No such file or directory)
[pid 27947] open("/lib/libodbc.so", O_RDONLY) = -1 ENOENT
(No such file or directory)
[pid 27947] write(2, "/usr2/applix/axdata/elfodbc:
can't load library 'libodbc.so'\n", 61) = -1 EIO (I/O error)
     

所以发生的事情是 applix elfodbc 在搜索 libodbc.so 但找不到它。 这就是为什么需要修改 axnet.cnf。

57.5.4. 运行ApplixWare演示

要完成ApplixWare Data Tutorial,你需要创建 教程中引用的示例表。用于创建这些表的 ELF 宏试图在许多数据库列上 使用 NULL 条件,而Postgres目前不允许 这样做。

要绕开这个问题,你可以这样做:

修改ApplixWare演示

  1. 把/opt/applix/axdata/eng/Demos/sqldemo.am 复制到一个本地目录。

  2. 编辑这份sqldemo.am的本地副本:

    1. 搜索 'null_clause = "NULL"

    2. 把它改为 null_clause = ""

  3. 启动Applix Macro Editor。

  4. 从Macro Editor中打开 sqldemo.am 文件。

  5. 选择File->Compile and Save。

  6. 退出Macro Editor。

  7. 启动Applix Data。

  8. 选择*->Run Macro

  9. 输入值"sqldemo",然后点击OK。

    你应该能在数据窗口的状态行(左下角)看到进度。

  10. 现在你应该可以访问演示表了。

57.5.5. 有用的宏

你可以把数据库登录和口令信息加到标准的 Applix 启动宏文件中。 下面是一个~/axhome/macros/login.am文件的 例子:

macro login
set_set_system_var@("sql_username@","tgl")
set_system_var@("sql_passwd@","no$way")
endmacro
     

小心

对于任何包含用户名和口令信息的文件,你都应当小心设置文件保护。

57.5.6. 支持的平台

psqlODBC已在Linux 上构建并测试过。有报告称在 FreeBSD 和 Solaris 上也成功了。 对于其他已经支持Postgres的平台, 基本代码没有已知的限制。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。