使用.NET Entity Framework 6.1.3尝试对Informix数据库(“ DB2 v10.5.700.375 Fix Pack 7”)运行插入时出现错误
错误[IX000] [IBM] [IDS / NT64]无效的缺省智能大对象空间名称(智能大对象空间)。 (-130 ISAM错误:没有这样的数据库空间)
该页面http://www-01.ibm.com/support/docview.wss?uid=swg21424434建议检查onstat命令。
“ onstat -d”命令的输出为:
C:\ Program Files \ Informix> onstat -d
IBM Informix Dynamic Server版本12.10.FC9DE-在线-最多1天22:26:52-185088 KB
数据库空间
地址编号标志fchunk nchunks pgsize标志所有者名称
0000000080CD5030 1 0x30001 1 1 4096 N BA notifyix rootdbs
1活跃,最多2047
大块
地址块/ dbs偏移量大小可用bpages标志路径名
0000000080CD5280 1 1 0 216064 91351 PO-B-D C:\ PROGRA〜1 \ Informix \ storage \ rootdbs.000
1个活动,最大32766
注意:DBspace块的“ size”和“ free”列中的值为
以它们所属的DBspace的“ pgsize”显示。
扩展块容量模式:始终
最佳答案
onstat -d
的输出显示您有一个名为rootdbs
的常规数据库空间。它根本不显示任何智能大对象空间,更不用说一个名为sbspace
的智能大对象了。 sbspace(智能Blob空间)用于存储智能Blob。您的系统配置为期望/使用名为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
的智能大对象空间; -p
指定文件的完整路径; -o 0
指定偏移量应为0; -s 10240
将大小设置为10 MiB。一定要加大尺寸;更大的数量取决于您将在智能Blob空间中存储多少数据,而后者又取决于您要插入的内容以及要插入的数量以及每个对象的大小。
零偏移量是磁盘驱动器不如2 GiB(它们在过去30年中增长了!)那么大的“糟糕的过去”的后遗症。假设偏移量将始终为零(但系统要求您指定零,而不是将其默认设置为零),除非您使用的是原始磁盘(您未使用所示命令)。并且
-p
,-o
,-s
的参数序列也很重要。添加智能大对象空间后,应该对系统进行归档。
如果将来需要更多空间,则可以向现有sbspace中添加更多块。
通过将
onspaces
作为informix
运行而没有其他选项,可以找到更多选项。它显示了您可以指定的其他内容。您可以在IBM Knowledge Center中找到
onspaces
的手册页:onspaces