db2异常

一、db2 SQL0180N The syntax of the string representation of a datetime value is incorrect. SQLSTATE=2200

    问题描述:在用import导入时没有问题,用load导入时发生SQL0180N The syntax of the string representation of a datetime value is incorrect. SQLSTATE=2200

    应该是数据源中的Timestamp没有毫秒(2013-10-10 00:00:00),而Timestamp的默认格式是有毫秒的,所以load不进去,但是import却能,纳闷。。。

    解决:modified by 后面加上Timestampformat=\"yyyy-mm-dd hh:mm:ss\"参数设定格式

================================================================

二、SQL3022N  An SQL error "-104" occurred while processing the SELECT string

     这个只有在Linux的DB2客户端操作会出现这问题。

     解决:db2 后面跟住的命令必须用双引号“”括住,如下:db2 "export to <路径下的文件名> of del modified by timestampformat=\"yyyy-mm-dd hh:mm:tt.uuuuuu\"  select * from <表名>"

================================================================
三、SQL0668N 由于表 "xxxx(表名)" 上的原因码 "3",所以不允许操作。 SQLSTATE=57016

    原因:表处于“装入挂起”状态。对此表的先前的 LOAD 尝试失败。在重新启动或终止 LOAD 操作之前不允许对表进行存取

    解决:通过分别发出带有 RESTART 或 TERMINATER 选项的 LOAD 来重新启动或终止先前失败的对此表的 LOAD 操作。

        1、TERMINATER的LOAD命令可以终止装入进程,使目标表恢复正常可用状态:

            LOAD FROM D:/*******.DEL OF DEL TERMINATE INTO [表名]

        2、RESTART的LOAD命令可以在源文件修改正确的时候使用,使装入进程重新开始:

            LOAD FROM D:/*******.DEL OF DEL RESTART INTO[表名]

================================================================
四、db2 truncate SQL0428N 只允许将该 SQL 语句作为工作单元的第一条语句。 SQLSTATE=25001

db2 truncate 语句
在处理truncate 语句之前,发出 COMMIT 或 ROLLBACK。
如果有任何 WITH HOLD 游标,那么将需要将其关闭。
如果语句是 SET INTEGRITY,那么除去 COMMIT THRESHOLD 子句。
否则“SQL0428N  只允许将该 SQL 语句作为工作单元的第一条语句。  SQLSTATE=25001”
只有9.7及以上版本支持truncate语句。

================================================================

五、SQL1092N "DB2ADMIN" 没有执行所请求命令的权限

    报错:SQL1092N "DB2ADMIN" 没有执行所请求命令的权限

    问题描述:即使将用户加入db2admin组和administrators组也不行,即使用administrator用户执行也不行。

    问题解决:在db2cmd命令行下,敲入db2set DB2_GRP_LOOKUP=LOCAL,TOKENLOCAL

================================================================

六、root运行db2start报SQL1092N

    报错:root运行db2start报:SQL1092N "ROOT " does not have the authority to perform the requested command.
    问题描述:这是因为root的权限不够,要把root加到SYSADM_GROUP,那怎么知道SYSADM_GROUP具体是什么呢?
    问题解决使用db2用户执行下列命令:
        [db2inst1@localhost ~]$ db2 get dbm cfg|grep SYSADM_GROUP
         SYSADM group name                        (SYSADM_GROUP) = DB2IADM1
    编辑/etc/group把root加到DB2GRP1组中就可以

    辑文件 /etc/group,将root用户加入到与DB2相关的几个组:db2grp1, db2fgrp1, dasadm1. (好像不用)
================================================================






















你可能感兴趣的:(DB2)