Sql 现有DB2列报告为不是表的列
在DB2上运行的Moodle 2安装中,删除用户不成功,从数据库读取时返回错误: 调试信息:[IBM][CLI Driver][DB2/LINUXX8664]SQL0206N“USERIDFROM”在使用它的上下文中无效。SQLSTATE=42703 SQLCODE=-206 从mdl_消息中选择*其中useridfrom=?按时间创建订单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
[阵列( 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列中显示的列的子集。你能帮我理解一下为什么列中有变化吗?