插入记录时出现 Informix“没有这样的 DBspace”错误

Posted

技术标签:

【中文标题】插入记录时出现 Informix“没有这样的 DBspace”错误【英文标题】:Informix "no such DBspace" error when inserting a record 【发布时间】:2018-03-23 01:28:25 【问题描述】:

我在尝试使用 .NET Entity Framework 6.1.3 对 Informix 数据库(“DB2 v10.5.700.375 Fix Pack 7”)运行插入时遇到错误

错误 [IX000] [IBM][IDS/NT64] 默认 sbspace 名称 (sbspace) 无效。 (-130 ISAM 错误:没有这样的数据库空间)

此页面http://www-01.ibm.com/support/docview.wss?uid=swg21424434 建议检查 onstat 命令。

“onstat -d”命令的输出是:

C:\Program Files\Informix>onstat -d IBM Informix 动态服务器版本 12.10.FC9DE -- 上线 -- 上线 1 天 22:26:52 -- 185088 KB 数据库空间 地址编号标志 fchunk nchunks pgsize 标志所有者名称 0000000080CD5030 1 0x30001 1 1 4096 N BA informix rootdbs 1 个活动,最多 2047 个 块 地址块/dbs 偏移量大小空闲 bpages 标志路径名 0000000080CD5280 1 1 0 216064 91351 PO-B-D C:\PROGRA~1\Informix\storage\rootdbs.000 1 个活动,最大 32766 注意:DBspace 块的“大小”和“空闲”列中的值是 根据它们所属的 DBspace 的“pgsize”显示。 扩展块容量模式:始终

【问题讨论】:

查看连接字符串。我相信您没有指定正确的数据库。服务器是正确的,但您没有在连接字符串或查询中指出您正在使用服务器上的哪个数据库。请参阅:connectionstrings.com/informix 很好地显示来自onstat -d的输出;这使得问题诊断变得直截了当。谢谢。 为什么您的 Informix 数据库名为“DB2 v10.5.700.375 Fix Pack 7”? 【参考方案1】:

onstat -d 的输出显示您有一个名为rootdbs 的常规数据库空间;它根本不显示任何 sbspace,更不用说一个名为 sbspace 的空间了。 sbspace(智能 blob 空间)用于存储智能 blob。您的系统配置为期望/使用名为 sbspace 的 sbspace。无论您插入的是什么,都需要存储在 sbspace 中。它可能是 BLOB 或 CLOB 值,也可能是另一种使用智能 Blob 作为存储机制的类型。

您需要创建一个文件(或选择一个磁盘设备)用于 sbspace,然后添加它。

您似乎在 Windows 上。可能还有其他方法可以做我即将做的类似 Unix 的事情。作为用户informix,执行:

cd C:\PROGRA~1\Informix\storage
cp nul: sbspace.000
onspaces -c -S sbspace -p C:\PROGRA~1\Informix\storage\sbspace.000 -o 0 -s 10240

-c 表示“创建”; -S sbspace 表示“创建一个名为 sbspace 的 sbspace; -p 指定文件的完整路径; -o 0 指定偏移量应为 0; -s 10240 将大小设置为 10 MiB。

一定要加大尺寸;多大取决于您要在智能 blob 空间中存储多少数据,而这又取决于您插入的内容、要插入的数据数量以及每个数据的大小。

零偏移量是“糟糕的旧时代”的遗留物,当时磁盘驱动器还没有 2 GiB 大(它们在过去 30 年中一直在增长!)。假设偏移量始终为零(但系统要求您指定零,而不是默认为零),除非您使用的是原始磁盘(您没有使用显示的命令)。 -p-o-s 的参数序列也很重要。

您应该在添加 sbspace 后对系统进行存档。

如果以后需要更多空间,可以在现有的 sbspace 中添加更多块。

您可以通过将onspaces 运行为informix 来找到更多选项,而无需其他选项;它显示了您还可以指定什么。

您可以在 IBM 知识中心找到 onspaces 的手册页:

onspaces

【讨论】:

是的,插入到 CLOB 字段中。

以上是关于插入记录时出现 Informix“没有这样的 DBspace”错误的主要内容,如果未能解决你的问题,请参考以下文章

插入记录时出现语法错误或访问冲突

将记录插入 phpmyadmin 时出现 Asynctask 错误

Hibernate:10个或更多用户同时插入记录时出现异常

将新记录插入特定表时出现死锁

尝试在表中插入不存在的记录时出现 DB2 -803 错误

怎么向informix数据库表中一次插入多条记录