У меня проблема, когда я обновляю миллионы строк в моей базе данных, поэтому вместо того, чтобы обновлять каждую из них отдельно, я хочу объединить группы из 1000 операторов в один запрос.Ruby mysql2 несколько операторов в одном запросе
Я включил MULTI_STATEMENTS как так
client = Mysql2::Client.new(:host => 'localhost', :database => 'mehdb', :username => "root", :password => "", :flags => Mysql2::Client::MULTI_STATEMENTS)
Вот пример кода, который я бегу
sql = "SELECT id, x FROM pew WHERE x IS NULL LIMIT 1000"
results = db_read.query(sql)
while results.count > 0
updates = ''
results.each do |r|
updates += "UPDATE pew SET x = 10 WHERE id = #{r['id']};"
end
db_write.query(updates) unless updates.empty?
results = db_read.query(sql)
end
Эта работа в порядке во время первого запуска через, но затем, когда он выстреливает второй набор обновлений Я получаю это сообщение об ошибке
`query': Commands out of sync; you can't run this command now (Mysql2::Error)
С кем это может быть передние? Или какие-либо рекомендации по другому подходу?
Примечание: 'db_write' есть' ActiveRecord :: Base.connection.raw_connection' – Envek