mysql语法错误,查询直接工作
我正在尝试在rails中使用以下命令执行查询:mysql语法错误,查询直接工作,mysql,Mysql,我正在尝试在rails中使用以下命令执行查询: ActiveRecord::Base.connection.execute(query.join) 我将查询构建为字符串,如下所示: UPDATE balance_lines SET parent_id = 2728740 WHERE id = 2728797; UPDATE balance_lines SET parent_id = 2728725 WHERE id = 2728767; UPDATE balance_lines SET p
ActiveRecord::Base.connection.execute(query.join)
我将查询构建为字符串,如下所示:
UPDATE balance_lines SET parent_id = 2728740 WHERE id = 2728797;
UPDATE balance_lines SET parent_id = 2728725 WHERE id = 2728767;
UPDATE balance_lines SET parent_id = 2728735 WHERE id = 2728783;
UPDATE balance_lines SET parent_id = 2728727 WHERE id = 2728770;
UPDATE balance_lines SET parent_id = 2728751 WHERE id = 2728838;
从rails执行查询时,我得到一个错误:
ActiveRecord::StatementInvalid(Mysql::Error:中存在错误
您的SQL语法;检查与您的MySQL对应的手册
在“更新平衡”行附近使用正确语法的服务器版本
设置parent_id=2728725,其中id=2728767
但是当我从mysql UI执行它时,它工作了!有什么问题吗?请尝试使用CASE Station:
UPDATE balance_lines SET parent_id =
CASE WHEN id = 2728797 THEN 2728740
WHEN id = 2728767 THEN 2728725
WHEN id = 2728783 THEN 2728735
WHEN id = 2728770 THEN 2728727
WHEN id = 2728838 THEN 2728751
END
WHERE id in (2728797,2728767,2728783,2728770,2728838)
用CASE Station试试:
UPDATE balance_lines SET parent_id =
CASE WHEN id = 2728797 THEN 2728740
WHEN id = 2728767 THEN 2728725
WHEN id = 2728783 THEN 2728735
WHEN id = 2728770 THEN 2728727
WHEN id = 2728838 THEN 2728751
END
WHERE id in (2728797,2728767,2728783,2728770,2728838)
用CASE Station试试:
UPDATE balance_lines SET parent_id =
CASE WHEN id = 2728797 THEN 2728740
WHEN id = 2728767 THEN 2728725
WHEN id = 2728783 THEN 2728735
WHEN id = 2728770 THEN 2728727
WHEN id = 2728838 THEN 2728751
END
WHERE id in (2728797,2728767,2728783,2728770,2728838)
用CASE Station试试:
UPDATE balance_lines SET parent_id =
CASE WHEN id = 2728797 THEN 2728740
WHEN id = 2728767 THEN 2728725
WHEN id = 2728783 THEN 2728735
WHEN id = 2728770 THEN 2728727
WHEN id = 2728838 THEN 2728751
END
WHERE id in (2728797,2728767,2728783,2728770,2728838)
您试图一次运行多个查询。您可能无法做到这一点。您需要一次运行一个查询。我不知道问题出在哪里,但您可能可以循环查询并执行每个查询。@johncode-但我想节省时间并对所有查询执行一个查询。如何实现这一点?这只是字符串的开头。它有50个-像这样的100行!这可以工作
query.each{| q | ActiveRecord::Base.connection.execute(q)}
,可能包装在数据库中Transaction@MrYoshiji-但如果我只想往返服务器一次,以加快应用程序的运行速度,该怎么办?您正在尝试一次运行多个查询。您可能无法做到这一点。您需要一次运行一个查询。我不知道问题出在哪里,但您可能可以循环查询并执行each one。@johncode-但我想节省时间并对所有人进行一次查询。我如何才能做到这一点?这只是字符串的开头。它有50-100行这样的行!这可以工作query.each{q | ActiveRecord::Base.connection.execute(q)}
,可能包装在数据库中Transaction@MrYoshiji-但如果我只想往返服务器一次,以加快应用程序的运行速度,该怎么办?您正在尝试一次运行多个查询。您可能无法做到这一点。您需要一次运行一个查询。我不知道问题出在哪里,但您可能可以循环查询并执行each one。@johncode-但我想节省时间并对所有人进行一次查询。我如何才能做到这一点?这只是字符串的开头。它有50-100行这样的行!这可以工作query.each{q | ActiveRecord::Base.connection.execute(q)}
,可能包装在数据库中Transaction@MrYoshiji-但如果我只想往返服务器一次,以加快应用程序的运行速度,该怎么办?您正在尝试一次运行多个查询。您可能无法做到这一点。您需要一次运行一个查询。我不知道问题出在哪里,但您可能可以循环查询并执行each one。@johncode-但我想节省时间并对所有人进行一次查询。我如何才能做到这一点?这只是字符串的开头。它有50-100行这样的行!这可以工作query.each{q | ActiveRecord::Base.connection.execute(q)}
,可能包装在数据库中Transaction@MrYoshiji-但如果我只想往返服务器一次,以加快应用程序的速度,该怎么办?