此查询似乎没有完成。怎么了?

时间:2015-05-11 13:37:12

标签: mysql

Update t_ro2EX 
    inner join t_lX3pw on t_lX3pw.id = t_ro2EX.id
    set t_ro2EX.column_bcde = concat_ws('----', t_lX3pw.column_5, t_lX3pw.column_7) 
where t_lX3pw.column_20 > 0;

我写了这个查询,似乎没有完成。

架构:

t_lX3pw和t_ro2EX都有大约80,000行。 ids是相同的,它只是在多个表中拆分的csv数据。我试图连接几个列并将它们放入由' ----'

分隔的单个列中

我收到以下错误:

Lock wait timeout exceeded; try restarting transaction

查询有什么问题?

2 个答案:

答案 0 :(得分:0)

你使用innodb吗?

Linux:在mysql配置(/etc/my.cnf或/etc/mysql/my.cnf)中,插入/编辑此行

innodb_lock_wait_timeout = 50

答案 1 :(得分:0)

尝试这种方式:

UPDATE t_ro2EX 
    INNER JOIN t_lX3pw 
    ON t_lX3pw.id = t_ro2EX.id
      AND t_lX3pw.column_20 > 0
    SET t_ro2EX.column_bcde = concat_ws('----', t_lX3pw.column_5, t_lX3pw.column_7);

可以更快,更高效。