Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 现有DB2列报告为不是表的列_Sql_Db2_Moodle_Db2 Luw - Fatal编程技术网

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

Sql 现有DB2列报告为不是表的列,sql,db2,moodle,db2-luw,Sql,Db2,Moodle,Db2 Luw,在DB2上运行的Moodle 2安装中,删除用户不成功,从数据库读取时返回错误: 调试信息:[IBM][CLI Driver][DB2/LINUXX8664]SQL0206N“USERIDFROM”在使用它的上下文中无效。SQLSTATE=42703 SQLCODE=-206 从mdl_消息中选择*其中useridfrom=?按时间创建订单 [阵列( 0 => '28521', )] 的错误描述很清楚,但是useridfrom是mdl\u消息的一列: $ db2 describe table m

在DB2上运行的Moodle 2安装中,删除用户不成功,从数据库读取时返回错误:

调试信息:[IBM][CLI Driver][DB2/LINUXX8664]SQL0206N“USERIDFROM”在使用它的上下文中无效。SQLSTATE=42703 SQLCODE=-206 从mdl_消息中选择*其中useridfrom=?按时间创建订单
[阵列( 0 => '28521', )]

的错误描述很清楚,但是
useridfrom
mdl\u消息的一列

$ 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.

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

可能是列名中有空格。您可以使用此查询查找是否有任何尾随空格:

db2 "select '<' || name || '>' from sysibm.syscolumns where tbname = 'MDL_MESSAGE'"
db2“从sysibm.syscolumns中选择“”,其中tbname='MDL_MESSAGE'”

您确定要从命令行和CLI以同一用户身份连接吗。可能存在这样一种情况,即同一个表中存在不同的模式,您看到的是不同表的描述,但正在访问另一个表。

从您收到的错误消息中,不清楚您使用的where子句是什么。你忘了把它放进去了吗?那是个奇怪的错误,桌子上有触发器吗?还是有什么方法可以打开区分大小写的功能?而不是偶然的一个
1
(一个)或
l
(一个)或类似的?除此之外,我假设
TIMECREATED
是从纪元开始的毫秒(或纳米)计数,以UTC为单位-为了避免DB2没有将时区信息存储在时间戳中这一事实?根据错误消息,看起来您向DB2传递了一个问号USERIDFROM,而不是一个大整数。即使是从CLI,简单的
$db2“select*from mdl_消息,其中USERIDFROM=28251”
返回
SQL0206N“USERIDFROM”在使用它的上下文中无效。SQLSTATE=42703
@X-Zero和no,我在表中没有任何触发器。一个简单的问题是,当我检查“sysibm.syscolumns”中的列时,它会给我一堆列,但当我“select*from t_name”时,我看不到该列,它是上述sysibm列中显示的列的子集。你能帮我理解一下为什么列中有变化吗?