报告的现有DB2列不是表的列

时间:2012-06-19 15:26:06

标签: sql db2 moodle db2-luw

在DB2上运行的Moodle 2安装中,删除用户失败,从数据库中返回错误读取

  

调试信息:[IBM] [CLI驱动程序] [DB2 / LINUXX8664] SQL0206N“USERIDFROM”在使用它的上下文中无效。 SQLSTATE = 42703 SQLCODE = -206   SELECT * FROM mdl_message WHERE useridfrom =?按时间顺序排列
  [阵列(   0 => '28521',   )]

SQL0206N的错误说明很明确,但useridfrommdl_message的列:

$ db2 describe table mdl_message

                          Data type                     Column
Column name               schema    Data type name      Length     Scale Nulls
------------------------- --------- ------------------- ---------- ----- ------
 ID                       SYSIBM    BIGINT                       8     0 No    
 USERIDFROM               SYSIBM    BIGINT                       8     0 No    
 USERIDTO                 SYSIBM    BIGINT                       8     0 No    
 SUBJECT                  SYSIBM    VARCHAR                    200     0 Yes   
 FULLMESSAGE              SYSIBM    VARCHAR                    200     0 Yes   
 FULLMESSAGEFORMAT        SYSIBM    SMALLINT                     2     0 Yes   
 FULLMESSAGEHTML          SYSIBM    VARCHAR                    100     0 Yes   
 SMALLMESSAGE             SYSIBM    VARCHAR                    200     0 Yes   
 NOTIFICATION             SYSIBM    SMALLINT                     2     0 Yes   
 CONTEXTURL               SYSIBM    VARCHAR                    200     0 Yes   
 CONTEXTURLNAME           SYSIBM    VARCHAR                    200     0 Yes   
 TIMECREATED              SYSIBM    BIGINT                       8     0 No    

  12 record(s) selected.

还有什么可能导致此错误?

2 个答案:

答案 0 :(得分:6)

列名可能以某种方式在其中获得了空格。您可以使用此查询来查明是否有任何尾随空格:

db2 "select '<' || name || '>' from sysibm.syscolumns where tbname = 'MDL_MESSAGE'"

答案 1 :(得分:0)

您确定从命令行和CLI以同一用户身份进行连接。可能存在这样的情况:在同一个表中存在于不同的模式中,并且您看到了不同表的描述但访问了另一个表。