现在的位置: 首页 > 综合 > 正文

Informix 数据库常用问题解决方案(2)

2014年03月13日 ⁄ 综合 ⁄ 共 2605字 ⁄ 字号 评论关闭

1.1SQLCODE=271

l         INFORMIX解释:

-271 不能把新行插入这个表。
这个问题可能有许多原因,包括锁定的表或满磁盘。更多的信息请查看伴随的ISAM 错误代码。

l         问题分析:

可能是数据库空间、表空间满或者互锁。

l          参考解决方法:

检查数据库空间,如果是数据库空间满,则及时通知数据库管理员。如果还不能解决问题,则重建表,即先将表数据卸载下来,然后重新建表,在建表的语句中添加extent size 1048576 next size 104857 lock mode page,最后将表数据重新装载上去。

create table sf01

(

    ksdm char(8) not null ,

    policyno char(22) not null ,

。。。。。。

    sffid serial not null ,

    primary key (policyno) constraint "datagath".sf01_p

) extent size 1048576 next size 104857 lock mode page;

  

1.2SQLCODE=329

l         INFORMIX解释:

-329 数据库没有找到或没有系统权限。
试图打开的数据库在数据库服务器中找不到。检查名称的拼写。可能是数据库放在不同的数据库服务器(或网络系统),而你忽略了指定有该数据库名的服务器名(或节点名)。如果确认数据库如你拼写的那样存在,下一步就取决于正在使用的数据库了。 如果使用的是INFORMIX-SE,看得见的数据库是在形如<数据库名>.dbs中的目录名。必须对它们可读可写。数据库服务器首先在当前工作目录查看,然后是在DBPATH环境变量中命名的每个目录。这个错误的最常见原因是不正确设置或没有设置DBPATH环境变量。 如果使用的是INFORMIX OnLine动态服务器,按所拼写的数据库不存在。在某些环境中,可能有一次运行两个或更多的OnLine的实例,每个实例有它自己的数据库集合。对于版本6.0或以后版本,INFORMIX SERVER环境变量决定使用哪个INFORMIX OnLine 动态服务器的实例。对于版本5.01或更早的版本,TBCONFIG环境变量指出配置文件,它决定使用哪个INFORMIX -OnLine的实例。如认为可能在使用错误的OnLine实例,请找OnLine管理员。

l         问题分析:

1、 server连接数据库时,没有指定服务器名称。

2、 未启动数据库。

l         参考解决方法:

检查数据库是否已经启动,如果没有,则请分公司启动数据库。

1.3SQLCODE=387

l         INFORMIX解释:

-387 没有连接权限。
不能访问这条语句所要求的数据库,因为没有被获准与该数据库连接的权限。请与拥有该数据库管理员权限的人联系,并向他申请与该数据库连接的权限。

l         问题分析:

没有给下发用户赋连接权限。

l          参考解决方法:

给下发用户授权,然后在下发用户下,用dbaccess连接该数据库,测试连接是否成功。

1.4上下级数据库表结构不一致

l         现象描述

SQLCODE=1215SQLCODE=217

l         问题分析:

产生原因可能是作升级操作或者修改数据库结构导致上下级公司数据库表结构不一致。

l          参考解决方法:

仔细查询上下级数据库表结构,检查每个字段的字段明、数据类型、长度是否一致,如果不一致,将下级数据库表结构修改和上级数据库一致。

1.5SQLCODE=217

l         INFORMIX解释:

-217 查询中在任何表中都无法找到字段 column-name (或 SLV 未定义)。
该名称出现在此次查询的选择列表或 WHERE 子句中,但未在表中定义且不以语句本地变量 (SLV) 的定义出现。检查字段名或 SLV 名以及所选表名的拼写是否与所需的一样。 如果所有名称的拼写都正确,则所使用的表是错的,或数据库已改变,或者尚未定义 SLV。如果此无法找到的名称是对某一字段的引用,则该字段可能已重命名或被取消。如果此无法找到的名称代表的是 SLV 而且在语句中已定义了这个 SLV,则要确保 SLV 定义出现在对 SLV 名的其它所有引用之前。 当引擎试图更新与该表有关的视图时,在执行 ALTER TABLE 期间,该错误消息也会出现。

l         问题分析:

可能是上下级数据库升级不一致导致,问题十一:上下级数据库表结构不一致

1.6SQLCODE=1215

l         INFORMIX解释:

-1215 值过大,不能放进一个INTEGER
INTEGER
数据类型能接受绝对值从 0 2,147,483,647 (±231-1)的数值。若要存储超过此范围的数,字段或变量必须重定义为DECIMAL类型。(-2,147,483,648 32位的值,但不被接受;4GL中,它被用来指示一个null值。)

l         问题分析:

可能是上级数据库字段类型支持的长度比较大导致。

l          参考解决方法:

按照实际长度修改分公司字段类型。

1.7SQLCODE=201

l         INFORMIX解释:

-201 出现语法错误。
该一般性错误表明 SQL 语句的格式有错。可查找是否有遗漏或多余的标点(如遗漏或多余的逗号、子查询两边遗漏了括号等等)、拼写错误的关键字(如将 VALUES 写成 VALEUS )、用错的关键字(如 INSERT 语句中的 SET 或子查询中的 INTO )、顺序错误的关键字(如将 "NOT value IS" 写成 "value IS NOT" ),或将保留字用作标识符等。 提供完全 NIST 兼容的数据库服务器不保留任何字;在这些服务器上可以进行的查询,在较早期版本的 Informix 数据库服务器上就有可能失败并返回错误 -201 试图将 round-robin 语法与索引上的 CREATE INDEX ALTER FRAGMENT INIT 一起使用可能会引起此错误。不能用 round-robin 索引。

l         问题分析:

产生原因可能是数据不规范,如单证号带有特殊字符或是单引号”’”,导致应用生成SQL时报语法错误。

l          参考解决方法:

修改loadfile下的报错的数据文件,然后用bin目录下的compress.sh压缩回去。重新启动装载。

抱歉!评论已关闭.