2017-02-14 8 views
0

mysql2 gemでmysqlデータベースにアクセスします。私はそれが動作する機能を設定除外するとRuby:set関数を使用するとmysqlがエラーをスローする

Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT * from admins' at line 1 

conn.query("SET @showcurrent := false; SELECT * from admins;"

は私にエラーがスローされます。どうすればset機能で動作させることができますか?

conn.query("SELECT * from admins;"

=> #<Mysql2::Result:0x00ff8557af200 @query_options={:as=>:hash, :async=>false, :cast_booleans=>false, :symbolize_keys=>false, :database_timezone=>:local, :application_timezone=>nil, :cache_rows=>true, :connect_flags=>bla, :cast=>true, :default_file=>nil, :default_group=>nil, :host=>"bla1", :username=>"bla", :password=>"bla", :database=>"bla", :port=>3007}> 

答えて

0

試してみてください。

conn.query("SET @showcurrent = false; SELECT * from admins;") 
+0

は動作しません。 'Mysql2 :: Error:あなたはSQL構文にエラーがあります。あなたのMySQLサーバのバージョンに対応するマニュアルをチェックして、正しい構文が '1行目のSELECT * from admins'の近くで使用されていることを確認してください。 – Tonja

+0

これはどうでしょう:conn.query( "SELECT *、@ showcurrent:= admins; ) ' – eiko

+0

これを行うと@showcurrentは設定されないので、後でクエリで使用するたびに評価されません。 setの考え方は、この変数に特定の値を割り当て、後でそれにアクセスすることです。 – Tonja