2016-08-03 12 views
0

Wir verwenden Produktions- und Staging-Datenbanken in unserer Anwendung. Unsere Anforderung besteht darin, alle Datensätze in die Staging-Datenbank einzufügen, wenn ein Datensatz in der Produktionsdatenbank hinzugefügt wird, sodass beide Server konsistent sind und dieselben Daten haben.Ruby Mysql2 Client nicht Backslash beim Einfügen

Ich habe Mysql2-Client-Pool verwendet, um eine Verbindung zum Staging-Server herzustellen und den Datensatz einzufügen, der zur Produktion hinzugefügt wird. hier ist mein Code:

def create 
    @aperson = Person.new 
    @person = @aperson.save 
    if @person && Rails.env == "production" 
     #add_new_person_to_staging 

     client = Mysql2::Client.new(:host => dbconfig[:host], :username => dbconfig[:username], :password => dbconfig[:password], :database => dbconfig[:database])   
     @person_result = client.query('INSERT INTO user_types(user_name, regex, code) Values ("myname" , "\.myregex\." , "ns");') 
    end 
end 

Here "@person_result" Datensatz zu MySQL-Tabelle eingefügt wird, aber die "regex" Spalte eliminiert "\" Schrägstriche.

wie: user_name = myname, regex = .myregex., code = ns

wenn ich manuell die „Einfügen“ Abfrage in Zeile mysql Befehl ausführen es fügt, wie es zusammen mit \ slash ist. aber nicht durch "client.query" Warum ist \ slash beseitigt. Bitte hilf mir hier.

Danke.

Antwort

1

\ wird wahrscheinlich von dem MySQL2-Client als Teil eines SQL Injection Protection-Präprozessors entfernt.

Haben Sie versucht, entweder einen doppelten Backslash zu versuchen oder die Methode escape zu verwenden, um die Zeichenfolge ordnungsgemäß zu umgehen?

+0

Ja ich versucht \\ Schrägstriche hinzugefügt, aber beide werden eliminiert. – joe

0

Versuchen Sie es mit dieser

@person_result = client.query('INSERT INTO user_types(user_name, regex, code) Values (myname , "\."+myregx+".\" , ns)') 
+0

Es speichert in mysql wie folgt: % # {myname}% # {. Myregex.}% # {Ns} – joe

+0

Antwort aktualisiert ... –

Verwandte Themen