运行 在 Informix 12 上执行时出现段错误
Getting a seg fault when running sperform on Informix 12
我是 Informix 的新手,我正在尝试 运行 使用 sperform
的屏幕,但是当我尝试查询时它只是出现段错误。到目前为止我有:
- 已安装 Ubuntu 服务器 12(64 位)
- 安装了开发套件并运行时间 7.50
- 安装了 Informix 引擎 12.10
- 确认一切正常,运行ning;可以连接到 dbaccess
- 创建了一个示例数据库 & table 并插入了几行
- 使用来自 table
的 isql
生成了一个表单
- 运行 生成的表格
sperform
当我尝试使用表单查询时,我得到一个 "Segmentation fault (core dumped)" 并且它退出了。谁能帮我理解为什么?这不是最基本的吗?
初步回答
是;这是最基本的。不;它不应该崩溃。基本上没有任何情况会导致该序列崩溃。您可能应该向 IBM 提交错误报告。
唯一可能成为问题的是,我SQL可能是使用比服务器安装的版本更旧的 CSDK 构建的,并且可能存在意外的不兼容性。它应该有效,但偶尔会出现缺陷。如果您想探索如何证明这种可能性,请说出来。这有点繁琐,但在正式解决问题时可能会让您起床 运行ning。
扩展答案
YES! I'd love to try to fix this.
在我看来,第一步是查看我SQL (Informix SQL) 运行 在单独安装时是否正确 — 而不是与Informix 服务器代码。它应该在两种环境下都能工作,但新服务器代码可能更改了一些导致旧工具代码损坏的东西。
因此,重新安装 Informix SQL(如果需要,还可以安装其他开发工具,但您可以保存这些工具,直到获得只有 ISQL 的 POC)到一个新目录中。假设您的服务器安装在 /opt/informix
;您可以在 /opt/isql
中安装您的工具。 (还不需要卸载 /opt/informix
下的工具。)
- 将服务器
sqlhosts
文件(从 /opt/informix/etc/sqlhosts
)复制到新的 /opt/isql/etc/sqlhosts
。
- 改变
INFORMIXDIR=/opt/isql
.
- 将新值添加到路径前面 (
PATH=$INFORMIXDIR/bin:$PATH
)。
- 担心
LD_LIBRARY_PATH
的设置 — 您想选择 /opt/isql/lib
下的库,而不是 /opt/informix/lib
. 下的库
- 保持
INFORMIXSERVER
不变;您仍然会与同一个数据库服务器通信。
您现在应该尝试(重新)生成表单文件并 运行 它。运气好的话,现在可以用了。
OK, that works! Don't know if that's a good thing or not, but we're going to try to get that change into production.
它让你前进;那挺好的。让我感到欣慰的是,工具发布的 QA 过程的基础没有崩溃。该产品在 运行 的开发环境中工作。
令人讨厌的是,后来的服务器版本改变了一些东西,使得旧版本的工具不再适用于较新的服务器。应该没问题。然而,运行 工具和服务器的单独 INFORMIXDIR 值并非闻所未闻。如果服务器在单独的机器上,隔离将是不可避免的 — 这些工具将使用与服务器使用的不同的 INFORMIXDIR(忽略 NFS 文件系统等)
Is it possible that there's some aspect to my steps that cause something to be overwritten?
没有。经典的 'Rule of TEN (Tools, Engine, Network)' — 在服务器之前安装工具(在启用网络的服务器版本之前)或多或少适用,这就是您所做的。大约 20 年前,服务器的独立网络启用版本不再相关,但引擎之前的工具('Rule of TE' 只是不削减它)通常是正确的。
由于解决方法有效,我们需要向前看一点:这对您意味着什么?
- 您有一个临时有效的解决方案。
- 您在 运行 编程时需要注意环境设置。
- 使用这些工具(Informix 4GL、Informix SQL)的程序将 运行 具有
INFORMIXDIR=/opt/isql
和相应的环境设置。
- 服务器安装的程序(DB-Export、DB-Import、ON-Stat 等)将 运行 具有
INFORMIXDIR=/opt/informix
和相应的环境设置。
- 如果您愿意,可以在
/opt/isql/bin
中为您希望开发人员或用户使用的来自 /opt/informix/bin
的程序设置脚本。
/opt/isql/bin
中的脚本将为服务器正确设置环境,然后执行服务器程序。
/opt/informix/bin
中的脚本将类似地为工具正确设置环境,然后执行工具程序。
- 在每个目录中,假设您很小心,您有一个实际设置环境的脚本和 运行 另一个程序;程序名称只是(符号?)指向主脚本的链接。
- 您有两个独立的主脚本 — 一个用于设置服务器环境,一个用于设置工具环境。
- 您应该将问题报告给 IBM (Informix) 技术支持。您可以概述为解决该问题必须执行的操作。事实上,您有解决方法会降低紧迫性,但理想情况下,这仍然是一个应该解决的问题。 (虽然世界并不理想,以防万一您没有注意到;交付修复程序可能需要一些时间。)
我是 Informix 的新手,我正在尝试 运行 使用 sperform
的屏幕,但是当我尝试查询时它只是出现段错误。到目前为止我有:
- 已安装 Ubuntu 服务器 12(64 位)
- 安装了开发套件并运行时间 7.50
- 安装了 Informix 引擎 12.10
- 确认一切正常,运行ning;可以连接到 dbaccess
- 创建了一个示例数据库 & table 并插入了几行
- 使用来自 table 的
- 运行 生成的表格
sperform
isql
生成了一个表单
当我尝试使用表单查询时,我得到一个 "Segmentation fault (core dumped)" 并且它退出了。谁能帮我理解为什么?这不是最基本的吗?
初步回答
是;这是最基本的。不;它不应该崩溃。基本上没有任何情况会导致该序列崩溃。您可能应该向 IBM 提交错误报告。
唯一可能成为问题的是,我SQL可能是使用比服务器安装的版本更旧的 CSDK 构建的,并且可能存在意外的不兼容性。它应该有效,但偶尔会出现缺陷。如果您想探索如何证明这种可能性,请说出来。这有点繁琐,但在正式解决问题时可能会让您起床 运行ning。
扩展答案
YES! I'd love to try to fix this.
在我看来,第一步是查看我SQL (Informix SQL) 运行 在单独安装时是否正确 — 而不是与Informix 服务器代码。它应该在两种环境下都能工作,但新服务器代码可能更改了一些导致旧工具代码损坏的东西。
因此,重新安装 Informix SQL(如果需要,还可以安装其他开发工具,但您可以保存这些工具,直到获得只有 ISQL 的 POC)到一个新目录中。假设您的服务器安装在 /opt/informix
;您可以在 /opt/isql
中安装您的工具。 (还不需要卸载 /opt/informix
下的工具。)
- 将服务器
sqlhosts
文件(从/opt/informix/etc/sqlhosts
)复制到新的/opt/isql/etc/sqlhosts
。 - 改变
INFORMIXDIR=/opt/isql
. - 将新值添加到路径前面 (
PATH=$INFORMIXDIR/bin:$PATH
)。 - 担心
LD_LIBRARY_PATH
的设置 — 您想选择/opt/isql/lib
下的库,而不是/opt/informix/lib
. 下的库
- 保持
INFORMIXSERVER
不变;您仍然会与同一个数据库服务器通信。
您现在应该尝试(重新)生成表单文件并 运行 它。运气好的话,现在可以用了。
OK, that works! Don't know if that's a good thing or not, but we're going to try to get that change into production.
它让你前进;那挺好的。让我感到欣慰的是,工具发布的 QA 过程的基础没有崩溃。该产品在 运行 的开发环境中工作。
令人讨厌的是,后来的服务器版本改变了一些东西,使得旧版本的工具不再适用于较新的服务器。应该没问题。然而,运行 工具和服务器的单独 INFORMIXDIR 值并非闻所未闻。如果服务器在单独的机器上,隔离将是不可避免的 — 这些工具将使用与服务器使用的不同的 INFORMIXDIR(忽略 NFS 文件系统等)
Is it possible that there's some aspect to my steps that cause something to be overwritten?
没有。经典的 'Rule of TEN (Tools, Engine, Network)' — 在服务器之前安装工具(在启用网络的服务器版本之前)或多或少适用,这就是您所做的。大约 20 年前,服务器的独立网络启用版本不再相关,但引擎之前的工具('Rule of TE' 只是不削减它)通常是正确的。
由于解决方法有效,我们需要向前看一点:这对您意味着什么?
- 您有一个临时有效的解决方案。
- 您在 运行 编程时需要注意环境设置。
- 使用这些工具(Informix 4GL、Informix SQL)的程序将 运行 具有
INFORMIXDIR=/opt/isql
和相应的环境设置。 - 服务器安装的程序(DB-Export、DB-Import、ON-Stat 等)将 运行 具有
INFORMIXDIR=/opt/informix
和相应的环境设置。 - 如果您愿意,可以在
/opt/isql/bin
中为您希望开发人员或用户使用的来自/opt/informix/bin
的程序设置脚本。 /opt/isql/bin
中的脚本将为服务器正确设置环境,然后执行服务器程序。/opt/informix/bin
中的脚本将类似地为工具正确设置环境,然后执行工具程序。- 在每个目录中,假设您很小心,您有一个实际设置环境的脚本和 运行 另一个程序;程序名称只是(符号?)指向主脚本的链接。
- 您有两个独立的主脚本 — 一个用于设置服务器环境,一个用于设置工具环境。
- 使用这些工具(Informix 4GL、Informix SQL)的程序将 运行 具有
- 您应该将问题报告给 IBM (Informix) 技术支持。您可以概述为解决该问题必须执行的操作。事实上,您有解决方法会降低紧迫性,但理想情况下,这仍然是一个应该解决的问题。 (虽然世界并不理想,以防万一您没有注意到;交付修复程序可能需要一些时间。)