解決したいこと
RubyのMysql2で複文のループ処理を行いたいのですが、エラーがでてしまいます。
問題切り分けでおこなったこと
下記ではエラーが出ませんでした。
・ループ処理がない ⇒基本的なプログラムはきちんとできている。
・insert intoの1文だけでループ処理 ⇒ ループ処理もきちんとできている。
下記ではエラーがでました。
・insert intoとsetの2文でループ処理 ⇒ 下記と同様のエラーが表示されました。
表示されるエラー
ruby
1/Users/no1knows/.rbenv/versions/2.4.3/lib/ruby/gems/2.4.0/gems/mysql2-0.4.10/lib/mysql2/client.rb:120:in `_query': Commands out of sync; you can't run this command now (Mysql2::Error) 2 from /Users/no1knows/.rbenv/versions/2.4.3/lib/ruby/gems/2.4.0/gems/mysql2-0.4.10/lib/mysql2/client.rb:120:in `block in query' 3 from /Users/no1knows/.rbenv/versions/2.4.3/lib/ruby/gems/2.4.0/gems/mysql2-0.4.10/lib/mysql2/client.rb:119:in `handle_interrupt' 4 from /Users/no1knows/.rbenv/versions/2.4.3/lib/ruby/gems/2.4.0/gems/mysql2-0.4.10/lib/mysql2/client.rb:119:in `query' 5 from test.rb:48:in `block in <main>' 6 from test.rb:32:in `each' 7 from test.rb:32:in `<main>'
実行したプログラム
ruby
1#▼設定データ▼ 2client = Mysql2::Client.new( 3 :username => 'root', 4 :password => 'root', 5 :host => '127.0.0.1', 6 :database => "something", 7 :flags => Mysql2::Client::MULTI_STATEMENTS 8) 9#▲設定データ▲ 10 11for num in 1..2 do 12 13query = %{ 14 insert into posts (content, title) values ('(本文)' , '(タイトル)'); 15 set @post_id = last_insert_id(); 16 update posts set title = '(本文2)' where id = @post_id; 17} 18 19results = client.query(query) 20 21end
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/25 21:01
2018/02/26 00:57
2018/02/26 01:29