脚本的mysql行拒绝执行(没有错误/警告)
问题描述:
我有一个非常长的脚本,将csv文件导入到保存表中,执行一些按摩操作,然后将数据从保存表复制到最终表中。脚本的mysql行拒绝执行(没有错误/警告)
当运行脚本,执行一切除线494:
UPDATE `database`.`holding`
SET `rcnt_rslts`=TRUE
WHERE `test_rcnt`=TRUE
AND (`rcntrslt`='pos' OR `rcntrslt`='neg' OR `rcntrslt`='indeterminate');
rcnt_rslts
两个表中是BOOL
/TINYINT(1)
和上方的下方的线几乎是相同的并且被执行得很好。在脚本的其他地方没有其他对rcnt_rslts
的引用(通过查找/替换进行验证)。
如果我直接将该行直接放入CMI中,它就可以工作。
是否存在行/大小限制,mysql只是随机选取一行忽略?
编辑:如果很重要,在脚本运行后rcnt_rslts
的所有值都是NULL
。
答
OK,我会试试看:
1 - 也许你在做rcntrslt
一个错字,像这样做,你只列出一次。
UPDATE `database`.holding
SET rcnt_rslts=TRUE
WHERE test_rcnt=TRUE
AND (rcntrslt IN ('pos','neg','indeterminate'));
2- =
也可以区分大小写,LIKE
从未被尝试:
UPDATE `database`.holding
SET rcnt_rslts=TRUE
WHERE test_rcnt=TRUE
AND (rcntrslt LIKE 'pos' OR rcntrslt LIKE 'neg' OR rcntrslt LIKE 'indeterminate');
3-可以rcntrslt
还有什么其他的值,你不能扭转所有的测试?
UPDATE `database`.holding
SET rcnt_rslts = TRUE
WHERE test_rcnt<>FALSE AND test_rcnt IS NOT NULL
AND (rcntrslt NOT IN ('othervalue','test1','gdsd')
AND rcntrslt IS NOT NULL;
4-也许有在rcntrslt
造成空格或其他非打印字符了一定的污染在那里。
UPDATE `database`.holding
SET rcnt_rslts=TRUE
WHERE test_rcnt=TRUE
AND (rcntrslt LIKE '%pos%' OR rcntrslt LIKE '%neg%'
OR rcntrslt LIKE '%indeterminate%');
5-如果你想调试,你总是可以在那里做一些诊断选择,看看发生了什么。
CREATE TABLE log (
id integer auto_increment not null primary key,
logtime timestamp,
reason varchar(255) not null,
tablename varchar(255) not null,
fieldnames varchar(10000) not null,
values varchar(10000) not null,
INDEX log_time (logtime),
INDEX log_table (tablename),
INDEX log_reason (tablename, reason)) ENGINE = InnoDB;
INSERT INTO log (reason, tablename, fieldnames, values)
SELECT
'all values','holding', 'test_rcnt,rcntrslt'
, CONCAT(IFNULL(test_rcnt,'NULL'), ',' ,IFNULL(rcntrslt,'NULL')
FROM holding;
INSERT INTO log (reason, tablename, fieldnames, values)
SELECT
'test_rcnt = TRUE','holding', 'test_rcnt,rcntrslt'
, CONCAT(IFNULL(test_rcnt,'NULL'), ',' ,IFNULL(rcntrslt,'NULL')
FROM holding
WHERE test_rcnt = TRUE;
等
现在检查日志,看看有什么是错的。
@ muistooshort:你好。不,没有错误信息或警告 – jacob